错误信息:
[SQL Server]无法解决 equal to 运算中 "SQL_Latin1_General_CP1_CI_AS" 和 "Chinese_PRC_CI_AS" 之间的排序规则冲突。
场景:
一个简单的SQL语句,因为团队合作建表时排序方式不同,两个字段无法比较
select mca.* ,mo.Name
from MemberCA mca
left join MOrganization mo on mca.OID = mo.Id
解决:
使用COLLATE改变其中一个字段的排序方式
select mca.* ,mo.Name
from MemberCardApply mca
left join Mall_Organization mo on mca.OrganizationID COLLATE Chinese_PRC_CI_AS = mo.Id
扩展:
sqlserver字符集问题(中文出乱码,排序错误等)
在创建sqlserver 数据库时未指定排序字符集,databases则会使用instances的排序规则。为了支持中文,需要设置成Chinese_PRC_CI_AS。
通过sql脚本修改
--修改现有databases的排序规则 ALTER DATABASE mydb COLLATE Chinese_PRC_CI_AS
1.执行SQL 修改为单用户模式 ALTER DATABASE db_database SET SINGLE_USER WITH ROLLBACK IMMEDIATE
2.然后关闭所有的查询窗口,修改Options的Collocation属性为Chinese_PRC_90_CI_AS
3.执行SQL 再修改为多用户模式 ALTER DATABASE db_database SET MULTI_USER
来自:https://www.cnblogs.com/lnvc/p/12835116.html