如何比较 SQL 服务器中的 2 个字符串,如果大小写不同则不应该为真

How to compare 2 strings in SQL server which should not be true if any case difference

尝试比较 2 个字符串,如果两个字符串匹配则应该 return 为真,否则应该 return 为假

在下面的示例中,两个字符串因大小写不匹配。

有什么方法可以在 SQL Server 2016 中实现这个 示例:

Declare @str1 varchar (100) ='Yes'
Declare @str2 varchar (100) ='YES'
    Select 
         Case When @str1=@str2 then 'same'
         Else 'Not same'
    END

预期结果:不一样

您可以使用区分大小写的排序规则来做到这一点,例如Latin1_General_CS_AS。 您可以为数据库设置默认排序规则,但也可以在特定查询中应用该排序规则。你的情况:

Declare @str1 varchar (100) ='Yes'
Declare @str2 varchar (100) ='YES'
    Select 
         Case When @str1 COLLATE Latin1_General_CS_AS = @str2 COLLATE Latin1_General_CS_AS then 'same'
         Else 'Not same'
    END

另一种选择是

Declare @str1 varchar (100) ='Yes'
Declare @str2 varchar (100) ='YES'

    Select 
         Case When HASHBYTES( 'sha1', @str1)=HASHBYTES('sha1', @str2) then 'same'
         Else 'Not same'
    END

SQL Case Sensitive String Compare