最近在做SQL Server时遇到了一些问题.
Cannot resolve collation conflict for UNION operation.
这是什么原因呢?
1,在网上说这是SQL语句的问题,有可能是空值引起的.当有空值时,会出现该问题.
select a,b from ab;
解决办法是 select N'a,N'b from...
我发现这根本不是解决办法,没有达到问题本质.
2,不在这里掉屎了,赶快进入正题.
要解决它还要从SQL的Collection说起.也是就是排序规则的问题.
排序规则也可能导致SQL Server不能进行中文查询.
这个名词翻译的不太好,我们只需要了解它就行,我想它不过是一个语言或是编码方式的设置.它会引起数据库物理上的调整.
3,不同的排序规则或语言版本,其排序规则是不一样的.我们可以手工对数据库的排序规则进行修改.
我们国人使用的中文,一般使用的是Chinese_PRC_CI_AS
ALTER DATABASE yourDB COLLATE Chinese_PRC_CI_AS;
OK,你的数据库的排序规则已修改为 Chinese_PRC_CI_AS
看看你的问题解决了么?
4,哦,还没有解决.数据库的调整,有可能影响不到表中的字段.
我们可以看看,那些你使用的SQL语句中,用到哪能些表.
Cause:不同的排序规则的UNION,肯定会失败的,就是这个错误的主要原因.
Action:在企业管理器中,找到表,进入修改模式,把相关char类型的字段,修改成Default.数据库的默认.
呵呵,都默认了,当然排序规则就一样了,再UNION肯定就没有问题了.