sql2005 无法解决 equal to 操作"Chinese_PRC_CI_AS" 和 "Chinese_PRC_CS_AS" 之间的排序

本文介绍了解决在使用特定排序规则时出现的冲突问题的方法。通过跨库修改关联字段,使用了COLLATE关键字来指定一致的排序规则,从而解决了Chinese_PRC_CI_AS和Chinese_PRC_CS_AS之间的冲突。

无法解决 equal to 操作中 "Chinese_PRC_CI_AS" 和 "Chinese_PRC_CS_AS" 之间的排序规则冲突。

解决办法:

select ProductItem.U_hierarchy from ProductItem,

( select  itemcode  , U_hierarchy from acomext.dbo.oitm )t1

where ProductItem.itemCode  COLLATE Chinese_PRC_CI_AS = t1.itemcode COLLATE Chinese_PRC_CI_AS

 

此功能跨库修改关联字段

 

 

解决 equal to 运算中 `Chinese_PRC_BIN` `Chinese_PRC_CI_AS` 排序规则冲突,可采用以下方法: - **指定字符型字段排序规则**:在 SQL 里,能够运用 `COLLATE` 子句来指定字符型字段的排序规则。像在进行表连接操作时,为字段指定相同的排序规则,以避免冲突。示例如下: ```sql SELECT top(10) * FROM [attendance].[dbo].[att_AttendanceDetail] a left join [attendance].[dbo].[base_StaffInfo] b on a.staffID collate Chinese_PRC_CI_AS = b.user_no where uploadtime >= '2018-02-10 00:00:00' and staffID <> '0' and left(b.dept_no, 4) in (select dept_no from [attendance].[dbo].[Coll_deptInfo]); ``` 此示例在连接条件里为 `a.staffID` 指定了 `Chinese_PRC_CI_AS` 排序规则,从而 `b.user_no` 的排序规则保持一致,避免了冲突[^4]。 - **修改表列的排序规则**:可以使用 `ALTER TABLE` 语句来修改表中列的排序规则,让其与其他参与比较的字段排序规则相同。示例如下: ```sql ALTER TABLE [attendance].[dbo].[att_AttendanceDetail] ALTER COLUMN staffID [nvarchar] (32) COLLATE Chinese_PRC_CI_AS; ``` 该示例把 `[attendance].[dbo].[att_AttendanceDetail]` 表中的 `staffID` 列的排序规则修改成了 `Chinese_PRC_CI_AS` [^2]。 - **在查询中统一排序规则**:在查询语句里统一指定排序规则,使参与比较的字段使用相同的排序规则。示例如下: ```sql SELECT * FROM table1 JOIN table2 ON table1.column1 COLLATE Chinese_PRC_CI_AS = table2.column2 COLLATE Chinese_PRC_CI_AS; ``` 此示例在连接条件中为 `table1.column1` `table2.column2` 都指定了 `Chinese_PRC_CI_AS` 排序规则,确保比较时排序规则一致 [^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值