MS SQL無法解析 equal to 作業中 "Chinese_Taiwan_Stroke_CI_AS" 與 "Chinese_PRC_CI_AS" 之間的定序衝突。

操作系統 :windows 2008 2R

MS SQL :MS SQL 2008

场景:

AA数据库(简体) 排序规则Chinese_PRC_CI_AS、

BB数据库(繁体)排序规则Chinese_Taiwan_Stroke_CI_AS

select * form  AA..A    a  inner join BB..B b on b.中文字段  = a.中文字段 and B.year='2019' 

注:在这种情景下当两表关联不是通过中文字段关联而是通过数值型关联时不会产生这种错误

产生错误:

消息 468,级别 16,状态 9,第 4 行
無法解析 equal to 作業中 "Chinese_Taiwan_Stroke_CI_AS" 與 "Chinese_PRC_CI_AS" 之間的定序衝突。

该错误产生的原因在于在SQL内部简繁体排序规则是不同的,存在简繁体表关联时会导致排序冲突。处理该问题的方式就是在字段后面增加排序规则,强制字段使用该实例默认的排序规则

SELECT SERVERPROPERTY('Collation')  --查看当前数据库实例的排序规则
SELECT DATABASEPROPERTYEX ( '數據庫名稱' , 'Collation' )--查看数据库实例对应的排序规则

---查看排序规则对应的描述
SELECT name as 排序規則名稱,description as 排序規則的描述
FROM sys.fn_helpcollations()  
WHERE name = 'Chinese_Taiwan_Stroke_CI_AS' 

错误处理方式:

---正确的修改后语句
select * form  AA..A    a  inner join BB..B b on b.ID Collate 'Chinese_Taiwan_Stroke_CI_AS'   = a.ID and B.year='2019' 
select * form  AA..A    a  inner join BB..B b on b.ID = a.ID Collate 'Chinese_Taiwan_Stroke_CI_AS' and B.year='2019' 

---错误的修改后语句
select * form  AA..A    a  inner join BB..B b on b.ID = a.ID  and B.year='2019' Collate 'Chinese_Taiwan_Stroke_CI_AS' 


总结:排序规则错误出现在哪个关联字段上面则在哪个关联字段上面增加 Collate '排序规则'

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值