对SQL Server中的默认字符串比较选项感到困惑

时间:2013-08-21 09:31:32

标签: sql-server sql-server-2008 tsql

我对Microsoft SQL Server中使用的默认字符串比较方法感到困惑。到目前为止,我一直在使用UPPER()和LOWER()函数在Microsoft SQL Server上执行任何字符串比较。

但是必须知道默认情况下Microsoft SQL Server不区分大小写,我们需要在安装Microsoft SQL Server时更改排序规则以使其区分大小写。但是,如果是这种情况,那么UPPER和LOWER()函数的用途是什么。

2 个答案:

答案 0 :(得分:1)

正如您所发现的,upperlower仅在应用了区分大小写的排序规则时才用于比较,但这并不会使它们变得无用。

例如,UpperLower可用于格式化结果。

select upper(LicencePlate) from cars

您可以通过应用表格设计中的列或特定比较来应用排序而无需重新安装,即:

if 'a' = 'A' collate latin1_general_cs_as
    select '1'
else
    select '2'

if 'a' = 'A' collate latin1_general_ci_as
    select '3'
else
    select '4'  

请参阅http://technet.microsoft.com/en-us/library/aa258272(v=sql.80).aspx

答案 1 :(得分:1)

如果您想比较区分大小写的字符串,这可能是您要查找的语法

IF @STR1 COLLATE Latin1_General_CS_AS <> @STR2 COLLATE Latin1_General_CS_AS
    PRINT 'NOT MATCH'