最近在执行一些跨库关联查询语句的时候提示了 “Cannot resolve the collatior conflict between “Chinese_PRC_Ci As” and “soL Latini_General_CPi_Ci As” in the equal tol peratn” 的错误,查询整理一下相关资料如下:
排序规则
排序规则指定表示数据集中每个字符的位模式。 排序规则还确定数据的排序和比较规则,单个库可能存在多个不同的排序规则,通过语句
SELECT CONVERT(nvarchar(128), SERVERPROPERTY('collation'));
可以查询当前实例的排序方式 .
排序规则冲突原因
当连接有两个不同排序规则的表或者列的时候,会导致无法关联,无法比较,从而报错。比如我们有两个表,一个表使用Latin1_General_100_CI_AI_SC_UTF8排序规则,另一个表使用Chinese_PRC_CI_AS排序规则。当我们尝试比较或连接这两个表时,就会遇到排序规则冲突问题。
解决冲突的办法
1.使用COLLATE语句
使用 COLLATE 关键字可以显示的指定排序方式,在连接或者比较的时候使用可以覆盖原有的排序规则,例如:
Select * from A Inner Join B On A.Id = B.Id
//修改后
Select * from A Inner Join B On A.Id COLLATE Chinese_PRC_CI_AS = B.Id
2.修改数据库或者表的默认排序规则
如果频繁出现规则冲突,可以将某个表的规则调整,
ALTER DATABASE [db01] COLLATE Chinese_PRC_CI_AS
另外,当处理有数据的表的时候该语句不会生效,可以通过:
1.创建一个正确排序规则的table
2.数据从旧表复制过来
3.删除原表
4.新表重命名
© 版权声明
本站所有资源来自于网络,仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您(转载者)自己承担!
如有侵犯您的版权,请及时联系3500663466#qq.com(#换@),我们将第一时间删除本站数据。
如有侵犯您的版权,请及时联系3500663466#qq.com(#换@),我们将第一时间删除本站数据。
THE END












![[20230903]完善hide.sql脚本2.txt-牛翰网](https://niuimg.niucores.com/wp-content/uploads/2024/08/20240828182449938.jpg)
![[20241118]NLS_LANG设置问题2.txt-牛翰网](https://niuimg.niucores.com/wp-content/uploads/2024/08/20240828182447943.jpg)



暂无评论内容