无法解决 equal to 运算中 "Chinese_PRC_CI_AS" 和 "Chinese_Taiwan_Stroke_CI_AS" 之间的排序规则冲突。
2013-09-24 14:41
453 查看
最近做项目时,无意间碰到一个排序规则的问题
做了如下测试:
///创建表1
create table #t1(
name varchar(20) collate Albanian_CI_AI_WS,
value int);
//创建表2
create table #t2(
name varchar(20) collate Chinese_PRC_CI_AI_WS,
value int );
///执行如下语句
select * from #t1 A inner join #t2 B on A.name=B.name
会抛出如下错误信息:
无法解决 equal to 运算中 "Chinese_PRC_CI_AI_WS" 和 "Albanian_CI_AI_WS" 之间的排序规则冲突。
///执行如下语句,可成功执行
select * from #t1 A inner join #t2 B on A.name=B.name collate Albanian_CI_AI_WS
//查询如下的结果,查看所支持的排序规则。
select * from ::fn_helpcollations()
关于此函数的说明,可参见:MSDN。
通过以上的测试,项目中的问题的原因就比较明显了。
下述是针对Kingdee EAS的说明。
EAS的单据序时簿所绑定的Query是多表连接的查询,由于多个表之间使用连接查询时,连接条件的字段的排序规则不一致导致
出现排序规则冲突。
出现上述问题的原因:
执行数据库脚本的时候,使用的是sqlserver自带的控制台,而非EAS Admin Console。
导致执行后排序规则不一致。
解决办法:
重新建表,在EAS Admin Console执行数据库脚本。
或者使用这个语句来修改每个有问题的Table的列:
ALTER TABLE xxxTable ALTER COLUMN xxxColumn [nvarchar] (32) COLLATE Chinese_PRC_CI_AS
做了如下测试:
///创建表1
create table #t1(
name varchar(20) collate Albanian_CI_AI_WS,
value int);
//创建表2
create table #t2(
name varchar(20) collate Chinese_PRC_CI_AI_WS,
value int );
///执行如下语句
select * from #t1 A inner join #t2 B on A.name=B.name
会抛出如下错误信息:
无法解决 equal to 运算中 "Chinese_PRC_CI_AI_WS" 和 "Albanian_CI_AI_WS" 之间的排序规则冲突。
///执行如下语句,可成功执行
select * from #t1 A inner join #t2 B on A.name=B.name collate Albanian_CI_AI_WS
//查询如下的结果,查看所支持的排序规则。
select * from ::fn_helpcollations()
关于此函数的说明,可参见:MSDN。
通过以上的测试,项目中的问题的原因就比较明显了。
下述是针对Kingdee EAS的说明。
EAS的单据序时簿所绑定的Query是多表连接的查询,由于多个表之间使用连接查询时,连接条件的字段的排序规则不一致导致
出现排序规则冲突。
出现上述问题的原因:
执行数据库脚本的时候,使用的是sqlserver自带的控制台,而非EAS Admin Console。
导致执行后排序规则不一致。
解决办法:
重新建表,在EAS Admin Console执行数据库脚本。
或者使用这个语句来修改每个有问题的Table的列:
ALTER TABLE xxxTable ALTER COLUMN xxxColumn [nvarchar] (32) COLLATE Chinese_PRC_CI_AS
相关文章推荐
- sql:无法解决 equal to 操作中 "Chinese_PRC_CI_AS" 和 "Chinese_Taiwan_Stroke_CI_AS" 之间的排序规则冲突。
- 无法解决 equal to 操作中 "Chinese_PRC_Stroke_CI_AS" 和 "Chinese_PRC_CI_AS" 之间的排序规则冲突。
- 无法解决 equal to 运算中 "Chinese_PRC_CI_AS" 和 "SQL_Latin1_General_CP1_CI_AS" 之间的排序规则冲突。
- 无法解决 equal to 操作中 "Chinese_Taiwan_Stroke_CI_AS" 和 "Chinese_PRC_CI_AS" 之间的排序规则冲突。
- 无法解决 equal to 运算中 "Chinese_PRC_CI_AS" 和 "Korean_Wansung_CI_AS" 之间的排序规则冲突。
- sql:无法解决 equal to 操作中 "Chinese_PRC_CI_AS" 和 "Chinese_Taiwan_Stroke_CI_AS" 之间的排序规则冲突。
- BOS打开单据的时候出现:无法解决 equal to 运算中 "Chinese_PRC_CS_AS" 和 "Chinese_PRC_CI_AS" 之间的排序规则冲突。
- BOS打开单据的时候出现:无法解决 equal to 运算中 "Chinese_PRC_CS_AS" 和 "Chinese_PRC_CI_AS" 之间的排序规则冲突。
- 无法解决 equal to 运算中 "Chinese_PRC_CI_AS" 和 "Chinese_PRC_90_CI_AI" 之间的排序规则冲突。的解决方法
- 无法解决 equal to 运算中 \"Chinese_PRC_CI_AS\" 和 \"Chinese_PRC_CS_AS\" 之间的排序规则冲突。
- 无法解决 equal to 运算中 "Chinese_PRC_BIN" 和 "Chinese_PRC_CI_AS" 之间的排序规则冲突
- 无法解决 equal to 运算中 "Chinese_Simplified_Pinyin_100_CI_AS" 和 "Chinese_PRC_CI_AS" 之间的排序规则冲突
- 无法解决 equal to 运算中 "Chinese_PRC_CI_AS" 和 "Chinese_PRC_90_CI_AI" 之间的排序规则冲突。的解决方法
- 无法解决 equal to 操作中 "SQL_Latin1_General_CP1_CI_AS" 和 "Chinese_PRC_CI_AS" 之间的排序规则冲突。
- sqlserver2008查询语句报错 无法解决 equal to 运算中 "Chinese_PRC_BIN" 和 "Chinese_PRC_CI_AS" 之间的排序规则冲突
- 无法解决 equal to 运算中 "Chinese_PRC_CI_AS" 和 "SQL_Latin1_General_CP1_CI_AS" 之间的排序规则冲突。
- 无法解决 equal to 操作中 "SQL_Latin1_General_CP1_CI_AS" 和 "Chinese_PRC_CI_AS" 之间的排序规则冲突。
- 无法解决 equal to 操作中 "Chinese_PRC_CI_AS" 和 "Chinese_PRC_BIN" 之间的排序规则冲突
- 无法解决equal to 操作中"Chinese_PRC_CI_AS" 和"Chinese_PRC_CI_AS_KS" 之间的排序规则冲突。
- 无法解决 equal to 运算中 "Chinese_PRC_CI_AS" 和 "Chinese_PRC_90_CI_AI" 之间的排序规则冲突。的解决方法