"Chinese_PRC_BIN" 和 "Chinese_PRC_CI_AS" 之间的排序规则冲突。如何解决
CREATE TABLE #re
(TD001 varchar(50) NULL,--订单单别
TD002 varchar(50) NULL,--订单单号
TD003 varchar(50) NULL,--订单序号
TD004 varchar(50) NULL, --编码
TD008 float NULL,--数量
MB025 varchar(50) NULL, --属性
UDF02 varchar(50) NULL, --印字
MC005 varchar(50) NULL, --工单单别
LAYER int NULL,--层次
TD014 varchar(250) NULL,-- 客户型号
)
SELECT a.TD001,a.TD002,a.TD003,d.MD003,a.TD008*MD006/MD007*(1+MD008) AS TD008,
e.MB025,a.UDF02,c.MC005,2,a.TD014
from #re a left join BOMMC c on a.TD004 = c.MC001 left join BOMMD d on c.MC001=d.MD001
left join INVMB e on d.MD003=e.MB001 collate Chinese_PRC_CI_AI_WS
where a.MB025 <> 'P'
以上代码老是报(消息 468,级别 16,状态 9,第 16 行
无法解决 equal to 运算中 "Chinese_PRC_BIN" 和 "Chinese_PRC_CI_AS" 之间的排序规则冲突。)错误, 我已经加了collate Chinese_PRC_CI_AI_WS ,但是没有效果,请高人指点,谢谢.
------解决方案-------------------- SQL code
1.将数据库的字符集修改为:
alter database dbname collate Chinese_PRC_CI_AS
2.
--1. 为数据库指定排序规则
CREATE DATABASE db COLLATE Chinese_PRC_CI_AS
GO
ALTER DATABASE db COLLATE Chinese_PRC_BIN
GO
更改一下排序规则看看
------解决方案-------------------- --修改一下字符集规则就可以了,统一字符集规则 alter database dbname collate chinese_PRC_CI_AS
------解决方案-------------------- 你这是那个字段给那个字段冲突啊 如果是跟临时表的话,在临时表字段后面指定排序规则 SQL code
CREATE TABLE #re
(TD001 varchar(50) NULL collate Chinese_PRC_CI_AI_WS--订单单别
)
------解决方案-------------------- 探讨 我用 alter database kangda collate Chinese_PRC_CI_AS 结果如下 消息 5030,级别 16,状态 2,第 1 行 无法用排他锁锁定该数据库,以执行该操作。 消息 5072,级别 16,状态 1,第 1 行 ALTER DATABASE 失败。无法将数据库 'kangda' 的默认排序规则设置为 Chinese_PRC_CI_AS。 ……
------解决方案-------------------- 如果你的数据库在安装时设置(or默认)了某种排序规则,而你的db/table/store procedure等又是从别的地方直接迁移过来/备份还原过来的话,两种排序规则如果冲突,建议你直接重装数据库。。。 SQL2005以上,对已建好的table等修改排序规则很排斥的, 相信我,我碰到过。 如果只是个别的问题,可以直接删掉那个表,重建,或者在join时指定排序规则
------解决方案-------------------- 在条件后面 强制指定 排序就行了
------解决方案-------------------- 或 如果是数据库排序不一致,可改为相同 如果是列的排序不一致,可改为相同 操作可直接在企业管理器里改