SQL存储过程是否区分大小写?

8
例如...
ALTER PROCEDURE [dbo].[Reports_Dashboard_Get_Sav]   
    -- Add the parameters for the stored procedure here
    @startDate datetime,
    @endDate datetime,
    @companyID int=null

set @days=datediff(m,@startdate,@enddate)
if (@days)=0 
    set @days=1

这不是我的代码,但如果它区分大小写,那么由于startDate/startdate和endDate/enddate变量不匹配,@days将无法正确计算...

3个回答

18

根据你的数据库排序规则,它们可以是大小写敏感的。当你安装SQL Server并选择默认排序规则时,你会发现有一个“大小写敏感”复选框。某些排序规则是大小写敏感的,会影响你的查询(和存储过程)。

更糟糕的是,许多供应商不会在大小写敏感的服务器上测试他们的产品,这会导致运行时错误。


1
你打败了我 -- 不过这里有一个链接 http://aspadvice.com/blogs/ssmith/archive/2007/09/30/Case-Sensitive-or-Insensitive-SQL-Query.aspx - dbones
这适用于变量名称吗?还是只适用于数据? - Michael Haren
当我们在工作中获得了对另一个数据库的访问权限时,我很惊讶地发现不仅数据库对象是大小写敏感的,而且针对表数据的查询也是如此。 - Russ Cam
1
但是如果查询找不到对象,它就无法运行 - 它不会悄悄地插入NULL或其他任何东西。现在它可能认为表不存在,但在LEFT JOIN中,例如,如果一个表不在正确的情况下,你不会只得到NULL,而是会出现错误。 - Cade Roux

1

不,至少不是 T-SQL...


2
使用默认设置,您是正确的。但是,如果您的服务器使用区分大小写的排序规则,那么您将会有一个惊喜。我不知道为什么微软会做出这样(在我看来)非常愚蠢的事情。 - Disillusioned

0

据我回忆,SQL命令本身是不区分大小写的,我经常看到它们以小写形式编写。我相当确定其余部分也是不区分大小写的,因为它是T-SQL规范的扩展。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接