问题描述
- 当子查询里面加上Chinese_PRC_CI_AS的排序规则后,某些数据却查不出来
-
代码如下:SELECT * from dbo.VW_msSyInfo_zy WHERE syh collate Chinese_PRC_CI_AS not in (select Syh from dbo.msSyInfo_zy) and indate >'2015-01-01'
当没加collate Chinese_PRC_CI_AS的时候会报错
无法解决 equal to 运算中 "Chinese_PRC_CI_AS" 和 "Chinese_PRC_BIN" 之间的排序规则冲突。
加上collate Chinese_PRC_CI_AS时查出来的数据和实际数据量差之千里
请问各位高手,有没有办法解决此类问题
解决方案
数据库排序规则(Collate):Chinese_PRC_CI_AS
"Chinese_PRC_CI_AS" 和 "Chinese_PRC_CI_AI"
解决方案二:
两个表的排序规则一定要一致。可以先把其中一个改过来,查询完后,再改过去。
修改排序规则:ALTER TABLE tb ALTER COLUMN colname nvarchar(100) COLLATE Chinese_PRC_CI_AS
解决方案三:
我这边没有具体实例,可以试试这样:
SELECT * from dbo.VW_msSyInfo_zy
WHERE syh collate Chinese_PRC_CI_AS not in
(select Syh collate Chinese_PRC_CI_AS from dbo.msSyInfo_zy)
and indate >'2015-01-01'
解决方案四:
两个数据库字段排序方式不同,要么后台数据库修改,或者尝试楼上说的。不知道有没有其他办法。同问。
时间: 2022-12-10