日期:2014-05-17  浏览次数:20482 次

Cannot resolve the collation conflict between "Chinese_PRC_CI_AS" and "SQL_Latin

表关联查询的时候提示; 排序错误
Cannot resolve the collation conflict between "Chinese_PRC_CI_AS" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation. 

网上找了一种方案
ALTER   DATABASE   '数据库1'   COLLATE   Chinese_PRC_CI_AS  
执行后

打开数据库表 A
字段的排序属性 依旧是"SQL_Latin1_General_CP1_CI_AS  (想问这里。会有影响么?)

sql??排序

------解决方案--------------------
你可以直接在写语句的时候修改本次查询的排序规则。
------解决方案--------------------
應該是更改表的排序,更改數據庫的排序只是對新建的表有效.
------解决方案--------------------
潜在问题:
1、由于某些应用导致你的更改报错。
2、会影响数据存储。

所以权宜之计可以在语句中修改,或者把关联的两个库的排序规则修改
------解决方案--------------------
如果你要改的光改库是不行的,表列也要改。可行的办法是创建新数据库然后倒入数据。

或者在语句中用Collate
------解决方案--------------------
最好不要随便修改排序规则,否则会导致乱码。

你可以在比较的时候,同时指定排序规则,这样:

select
from tb
where 字段 collate Chinese_PRC_CI_AS = 'abc' collate Chinese_PRC_CI_AS
------解决方案--------------------
除了修改数据库级的排序规则,另需修改表字段的排序规则,

use [数据库1]

alter table [表A] alter column [字段名] [数据类型]([长度]) collate Chinese_PRC_CI_AS