SQL 中的区分大小写搜索。






4.38/5 (15投票s)
本文向您解释了如何处理 SQL 中的区分大小写搜索。
背景
上周,我们的资深同事让我们从数据库中选择以 'r'(小写 r)开头的记录。这让我们困扰了很久,但最终我们找到了解决方案。
许多应用程序都有一个功能需求,即所连接的数据库需要进行区分大小写的搜索或排序,即字符数据相关的操作需要区分大小写。
可能存在一些需要从数据库中查找区分大小写的记录的情况。
该如何操作?
要完成此任务,我们需要借助 SQL 排序规则。
什么是 SQL 排序规则?
MSDN 解释说
“是一种可以应用于数据库定义或列定义以定义排序规则的子句,也可以应用于字符字符串表达式以应用排序规则转换。”
排序规则编码了管理字符在语言(如希腊语或波兰语)或字母表(如 Latin1_General,西欧语言使用的拉丁字母表)中正确使用的规则。
简单来说,我们将所有规则整合在一起,并将其应用于表或列定义。 SQL 的默认排序规则是 Latin。
开始行动
假设我有一个名为 'users' 的表,其中包含 4 条记录。
1. responsive
2. Responsive
3. RESPONSIVE
4. ResPONsive
如果我们执行以下查询:
“select * from users where name = 'responsive'
”
它将返回所有列。因为所有列包含相同的数据,并且记录搜索不区分大小写。
以下图片可以更清晰地说明:
要获取区分大小写的记录,您需要更改该列的排序规则。
更改列排序规则
SQL Server 安装的默认排序规则是 SQL_Latin1_General_CP1_CI_AS,并且不区分大小写。以下是更改列排序规则的语法。
SELECT Column1 FROM Table1 WHERE Column1 = 'expression'
我们开始吧
是的,我们得到了精确的结果。
通过上述方法,我们更改了列排序规则以供临时使用。但我们也可以永久更改它,方法是使用以下查询:
ALTER TABLE Table1 ALTER COLUMN Column1 VARCHAR(20) COLLATE Latin1_General_CS_AS
要了解任何表的列排序规则,请运行以下存储过程:
EXEC sp_help tableName
以下是结果:
谢谢
这篇简单而简短的文章为您提供了一个建议“如何进行数据库中的区分大小写搜索”,
欢迎提出建议。