我对 Microsoft SQL Server 中使用的默认字符串比较方法完全感到困惑。到目前为止,我一直在使用UPPER() 和LOWER()函数在 Microsoft SQL Server 上执行任何字符串比较。
但是知道默认情况下 Microsoft SQL Server 不区分大小写,我们需要在安装 Microsoft SQL Server 时更改排序规则以使其区分大小写。但是,如果是这种情况,那么 UPPER 和LOWER()函数有什么用。
我对 Microsoft SQL Server 中使用的默认字符串比较方法完全感到困惑。到目前为止,我一直在使用UPPER() 和LOWER()函数在 Microsoft SQL Server 上执行任何字符串比较。
但是知道默认情况下 Microsoft SQL Server 不区分大小写,我们需要在安装 Microsoft SQL Server 时更改排序规则以使其区分大小写。但是,如果是这种情况,那么 UPPER 和LOWER()函数有什么用。
如果您想比较区分大小写的字符串,这可能是您要查找的语法
IF @STR1 COLLATE Latin1_General_CS_AS <> @STR2 COLLATE Latin1_General_CS_AS
PRINT 'NOT MATCH'
正如您所发现的,upper并且lower仅在应用了区分大小写的排序规则时用于比较,但这并不会使它们变得无用。
例如,Upper和Lower可用于格式化结果。
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