大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说sql server 排序_sqlserver分组排序取最大一条,希望您对编程的造诣更进一步.
问题:
在项目数据库开发中,有时我们编写的脚本,在本机执行是没有问题的,但部署到服务器的时候,却在脚本运行时报错了。报错的中英文错误提示信息分别如下。
中文:无法解决 equal to 运算中 “SQL_Latin1_General_CP1_CI_AS” 和 “Chinese_PRC_CI_AS” 之间的排序规则冲突。
English:Cannot resolve the collation conflict between “SQL_Latin1_General_CP1_CI_AS” and “Chinese_PRC_CI_AS” in the equal to operation.
根源:
根据博主(微信公众号:SQL数据库编程,微信号:zhang502219048)实际工作中遇到的问题,概括为:如果本机是中文操作系统,而服务器是英文操作系统,而且脚本使用了临时表并且没有指定nvarchar或varchar文本字段的排序规则,并在join表连接中关联项目数据库的表(项目数据库默认排序规则为Chinese_PRC_CI_AS)的on关联条件中用到此文本字段,则会出现此问题。
解决方案:
方案1(不推荐):
在join连接的on条件字段中,对临时表指定排序规则。这种方法不推荐,因为如果有10个join临时表的语句,就得写10次,太过于繁琐。
select * from #t1 a inner join t2 b on b.name = a.name collate Chinese_PRC_CI_AS
代码100分
方案2(推荐):
在临时表的nvarchar或varchar文本字段定义中,增加指定排序规则,一劳永逸,不需要再在join连接的on条件中指定排序规则。
代码100分create table #t1 ( name nvarchar(50) collate Chinese_PRC_CI_AS )
【转载请注明博文来源:https://www.cnblogs.com/zhang502219048/p/12992611.html】
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/8152.html