沧海笑的艺术人生

沧海一声笑, 滔滔两岸潮,浮沉随浪只记今朝
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

由于排序规则引起的“equal to”错误的解决方法

Posted on 2005-09-08 15:46  沧海笑  阅读(331)  评论(0编辑  收藏  举报

今天在做SBO数据库更新时,总是提示"equal to " conflict,SQL语句改了又改,始终提示这个错误,实在想不在什么原因。后来自己重建两个简单的表做实验,执行刚才的SQL语句,一切正常。郁闷了,网上狂搜,终于看到csdn上一个大佬的文章,按照他的介绍,问题立刻迎刃而解。

问题分析:
引起这个问题的根源是这个数据库采用了用来定义数据库排序规则或列定义排序规则的字句collate(具体介绍参考SQLSERVER online help),相互运算的两个表达式采用的排序规则不同引起的。
在排序规则里:
显式  >  隐性  >  强制默认

组合两个已指派给不同排序规则的显式表达式将生成错误。    
显式  X  +  显式  Y  =  错误  

隐性  X  +  隐性  Y  =  无排序规则

无排序规则  +  任何标志  =  无排序规则

无排序规则  +  显式  X  =  显式

解决方法:
找出排序规则冲突点。这个一般都在条件和另一未知(不同排序规则)表达式运算的地方, + collate+排序规则名
检索 Windows 排序规则和 SQL 排序规则的所有有效排序规则名称的列表
SELECT *
FROM ::fn_helpcollations()



好,一切ok


参考文章:http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=3551