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

发布于 2024-10-16 15:32:39 字数 279 浏览 5 评论 0原文

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

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

I just realized that SQL server '=' comparator when used for text comparison is case insensitive. I have a few questions regarding this functionality:

  1. Is this the same for all databases or specific to SQL server?
  2. I have been using the lower function to ensure the text comparison is insensitive till now. Is it still a good idea to follow the same?
  3. How can we do case sensitive comparisons in SQL server?
  4. Why is '=' operator defaulting to case insensitive comparison?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

森林散布 2024-10-23 15:32:39

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

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

No, case sensitivity has nothing to do with the equals sign.

Case sensitivity is determined by the collation for the database -- see the documentation for details.

っ左 2024-10-23 15:32:39

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

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

Case sensitivity depends only on the collation.
You can specify the collation within each '=' operation

SELECT  *
  FROM  [Table_1] a inner join
        [Table_2] b on a.Col1=b.Col2 collate Modern_Spanish_CS_AI
π浅易 2024-10-23 15:32:39

到目前为止,我一直在使用 lower 函数来确保文本比较不敏感。遵循同样的做法仍然是一个好主意吗?

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

I have been using the lower function to ensure the text comparison is insensitive till now. Is it still a good idea to follow the same?

Absolutely not. You will generally preclude the use of an index if you do this. Plain old = (or < or > or whatever) will either work or not depending on the collating you have chosen. Do not do this "just to be safe". Testing will make sure you've got it right.

明明#如月 2024-10-23 15:32:39

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

http://msdn.microsoft.com/en-我们/库/aa197951(v=sql.80).aspx

The case sensitivity of operations in SQL Server is determined during installation when you set the collation for the database. At that point in time you can choose to install SQL Server as case insensitive (default) or case sensitive.

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

很糊涂小朋友 2024-10-23 15:32:39

比较的完成方式取决于您为该字段选择的排序规则。如果您将字段更改为使用区分大小写的排序规则,则比较将区分大小写。

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

How the comparison is done depends on the collation that you have chosen for the field. If you change the field to use a case sensetive collation, the comparisons will be case sensetive.

By default fields use the collation set for the database, but each field can have it's own collation setting.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文