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

我刚刚意识到SQL Server '='比较器在用于文本比较时不区分大小写。 我有几个关于这个功能的问题:

  • 这对于所有数据库或特定于SQL服务器都是一样的吗?
  • 我一直在使用lower函数来确保文本比较直到现在都不敏感。 遵循同样的想法还是个好主意吗?
  • 我们如何在SQL Server中进行区分大小写的比较?
  • 为什么'='运算符默认不区分大小写比较?

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

    区分大小写取决于数据库的归类 - 请参阅文档以获取详细信息。


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

    SELECT  *
      FROM  [Table_1] a inner join
            [Table_2] b on a.Col1=b.Col2 collate Modern_Spanish_CS_AI
    

    我一直在使用下面的函数来确保文本比较直到现在都不敏感。 遵循同样的想法还是个好主意吗?

    绝对不。 如果你这样做,你通常会阻止使用索引。 Plain old =(或<或>或其他)可以工作或不工作,具体取决于您选择的整理。 不要这样做“只是为了安全”。 测试将确保您的答案正确。

    链接地址: http://www.djcxy.com/p/75185.html

    上一篇: Why is SQL Server '=' comparator case insensitive?

    下一篇: Linq to Sql case insensitive equality