郭某人的网站

关于 / 留言

MS SQL Server 中英文标点查询问题

COLLATE Chinese_PRC_CS_AS_WS “排序规则” 概念


默认情况下,查询中英文的问号 '?' 和 '?' 的结果是相同的;但以下代码却不同:

SELECT * FROM 表名 WHERE 字段名 COLLATE Chinese_PRC_CS_AS_WS like '%?%'
SELECT * FROM 表名 WHERE 字段名 COLLATE Chinese_PRC_CS_AS_WS like '%?%'

 

COLLATE 后的值对应 MS SQL Server 中的排序规则:

微软公司对于排序规则的大致解释如下:

在 SQL Server 的 COLLATE 子句中指定 Windows 排序规则名称。Windows 排序规则名称是由排序规则指示符和比较样式构成的。

Chinese_PRC 不必解释,后面的关键参数如下:

CaseSensitivity:CI 指定不区分大小写,CS 指定区分大小写。

AccentSensitivity:AI 指定不区分重音,AS 指定区分重音。

KanatypeSensitive:省略此选项指定不区分假名类型,KS 指定区分假名类型。

WidthSensitivity:省略此选项指定不区分全半角,WS 指定区分全半角。

所以,在以上代码中,COLLATE Chinese_PRC_CS_AS_WS,可以理解为区分大小写+区分重音+区分全半角,那么在实际的生产环境中,这个就可以用来执行大小写敏感性、中英文标点符号等的操作。


最后更新时间:2023/02/17 19:57

东西写多了,脑力不够用了,让我喝杯咖啡提提神 ☕

注意!你的赞赏转账请考虑再三后支付,此收款不作任何形式的退款。