SQLSERVER生僻字查询问题和关键字COLLATE

更新时间:2023-07-07 17:31:55 阅读: 评论:0

SQLSERVER⽣僻字查询问题和关键字COLLATE
先说问题,⽣僻字查询的问题,有的时候我们的数据⾥包含⼀些⽣僻字,在查询⽤Like模糊匹配的时候,发现有的查询不准确,测试数据如下:
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
croatiaGo
Create table #T([col] nvarchar(21))dangerzone
Inrt #T
sophoslect N'䱗'UNION
SELECT N'啊'
Go
汽车空调保养
gettysburg address
--测试数据结束
如果这时候⽤Like查询,就会存在查询不准确的情况:底座英文
Select * from #T WHERE col LIKE N'%䱗%'
查询结果:
两个数据都查询出来了,这时候我们使⽤COLLATE关键字,加上Chine_PRC_BIN可以解决该问题:
Select * from #T WHERE col LIKE N'%䱗%'  COLLATE Chine_PRC_BIN
结果:
这样就解决了这个⽣僻字查询的问题。
那么接下来我们说说问题原因和加的这个COLLATE Chine_PRC_BIN 是什么意思。
hor怎么读⽣僻字由于在数据库中没有对应的编码,这样就会造成like的时候定位不到数据,所以解决这个问题也是从编码处⼊⼿,在排序的时候来做编码转换。
SQLSERVER的排序规则有很多,Chine_PRC_BIN是⼀种排序规则,该规则分为两部分,其中Chine_PRC_是指针对⼤陆简体字UNICODE的排序规则,BIN指的是⼆进制排序选项,这些关联选项有很多 ,例如:
选项说明
区分⼤⼩写 (_CS)区分⼤写字母和⼩写字母。 如果选择此项,排序时⼩写字母将在其对应的⼤写字母之前。 如果未选择此选项,排序规则将不区分⼤⼩写。 即 SQL Server 在排序时将⼤写字母和⼩写字母视为相同。 通过指定 _CI,可以显式选择不区分⼤⼩写。
区分重⾳(_AS)区分重⾳字符和⾮重⾳字符。 例如,“a”和“ấ”视为不同字符。 如果未选择此选项,则排序规则将不区分重⾳。 即 SQL Server 在排序时将字母的重⾳形式和⾮重⾳形式视为相同。 通过指定 _AI,可以显式选择不区分重⾳。
郑中基与蔡卓妍
区分假名(_KS)区分⽇语中的两种假名字符类型:平假名和⽚假名。 如果未选择此选项,则排序规则将不区分假名。 即 SQL Server 在排序时将平假名字符和⽚假名字符视为相同。 省略此选项是指定不区分假名的唯⼀⽅法。
(_KS)⽚假名字符视为相同。 省略此选项是指定不区分假名的唯⼀⽅法。
区分全半⾓ (_WS)区分全⾓字符和半⾓字符。 如果未选择此选项,SQL Server 会在排序时将同⼀字符的全⾓和半⾓形式视为相同。 省略此选项是指定不区分全半⾓的唯⼀⽅法
选项说明
以上就是查询⽣僻字和排序关键字COLLATE的介绍,欢迎指正交流。
conca写在最后(今天是个特殊的⽇⼦):
今天是1024程序员节⽇,1024不知道从什么时候开始成了我们的节⽇,成了这些穿着格⼦衬衫、头发稀疏、但正在做着⼀些伟⼤事情的⼈群狂欢的节⽇,所以在博客⾥,也要祝福所有正在改变世界的程序员,节⽇快乐,远离脱发-拒绝Bug,Happy 1024
grossmargin

本文发布于:2023-07-07 17:31:55,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/170170.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:查询   排序   选项   问题   时候   僻字   规则
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图