首页 文章

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

提问于
浏览
19

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

  • 对于所有数据库或特定于SQL Server,这是相同的吗?

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

  • 如何在SQL Server中进行区分大小写的比较?

  • 为什么 '=' 运算符默认为不区分大小写的比较?

5 回答

  • 24

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

    区分大小写由数据库的排序规则确定 - see the documentation for details .

  • 3

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

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

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

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

  • 11

    在为数据库设置排序规则时,在安装期间确定SQL Server中的操作的区分大小写 . 在那个时候,您可以选择安装SQL Server作为不区分大小写(默认)或区分大小写 .

    http://msdn.microsoft.com/en-us/library/aa197951(v=sql.80).aspx

  • 1

    如何进行比较取决于您为该字段选择的排序规则 . 如果您更改字段以使用案例感知校对,则比较将具有案例意义 .

    默认情况下,字段使用数据库的排序规则集,但每个字段都可以拥有自己的排序规则设置 .

相关问题