为什么SQL Server'='比较器不区分大小写?

rkg*_*rkg 21 sql sql-server case-sensitive

我刚刚意识到'='用于文本比较的SQL服务器比较器不区分大小写.关于此功能,我有几个问题:

  1. 对于所有数据库或特定于SQL Server,这是相同的吗?
  2. 我一直在使用该lower函数来确保文本比较直到现在都不敏感.遵循同样的方法仍然是一个好主意吗?
  3. 我们如何在SQL Server中进行区分大小写的比较?
  4. 为什么'='运算符默认为不区分大小写的比较?

OMG*_*ies 25

不,区分大小写与等号无关.

区分大小写由数据库的排序规则确定 - 有关详细信息,请参阅文档.

  • @dportas - OP甚至没有提到问题中的列.他们可能同样谈论"IF"Z'='z'PRINT'Yes'` (3认同)

pco*_*fre 12

区分大小写仅取决于排序规则.您可以在每个'='操作中指定排序规则

SELECT  *
  FROM  [Table_1] a inner join
        [Table_2] b on a.Col1=b.Col2 collate Modern_Spanish_CS_AI
Run Code Online (Sandbox Code Playgroud)


lll*_*lll 5

我一直在使用lower函数来确保文本比较直到现在都不敏感.遵循同样的方法仍然是一个好主意吗?

绝对不.如果这样做,通常会排除使用索引.普通旧=(或<或>或其他)将起作用或取决于您选择的整理.不要这样做"只是为了安全".测试将确保您做对了.