错误信息:
[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
如果是汉字,可能还是匹配不上,但是我记得在C#程序里写的语句就可以正确读取,但是在SQL管理器里就不行,这个自测吧
扩展:
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统