SQL SERVER 生僻字查询问题和关键字COLLATE

    先说问题,生僻字查询的问题,有的时候我们的数据里包含一些生僻字,在查询用Like模糊匹配的时候,发现有的查询不准确,测试数据如下:

复制代码
 1 --测试数据
 2 if not object_id(N'Tempdb..#T') is null
 3     drop table #T
 4 Go
 5 Create table #T([col] nvarchar(21))
 6 Insert #T
 7 select N''UNION
 8 SELECT N''
 9 Go
10 --测试数据结束
复制代码

如果这时候用Like查询,就会存在查询不准确的情况:

Select * from #T WHERE col LIKE N'%䱗%'  

 查询结果:

 

  两个数据都查询出来了,这时候我们使用COLLATE关键字,加上Chinese_PRC_BIN可以解决该问题: 

Select * from #T WHERE col LIKE N'%䱗%'  COLLATE Chinese_PRC_BIN

结果:

 

 

那么接下来我们说说问题原因和加的这个COLLATE Chinese_PRC_BIN 是什么意思。

生僻字由于在数据库中没有对应的编码,这样就会造成like的时候定位不到数据,所以解决这个问题也是从编码处入手,在排序的时候来做编码转换。

COLLATE简单来说就是用来定义排序规则的,具体详细介绍可以看官方文档  https://docs.microsoft.com/zh-cn/sql/t-sql/statements/collations?view=sql-server-ver15

SQLSERVER的排序规则有很多,Chinese_PRC_BIN是一种排序规则,该规则分为两部分,其中Chinese_PRC_是指针对大陆简体字UNICODE的排序规则,BIN指的是二进制排序选项,这些关联选项有很多 ,例如:

 

 

上边列举了几个例子,如果想了解更多,可以到微软官网了解 https://docs.microsoft.com/zh-cn/sql/relational-databases/collations/collation-and-unicode-support?view=sql-server-ver15

posted @   每天进步多一点  阅读(583)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤
历史上的今天:
2022-02-27 H5调用手机摄像头和相册
2022-02-27 jquery监听页面滚动条滚动事件
2021-02-27 C# 打印PDF文档的10种方法
2019-02-27 Func与Action
2019-02-27 JavaScript编码规范
点击右上角即可分享
微信分享提示