Cannot resolve collation conflict for UNION operation.

最近在做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肯定就没有问题了.
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值