今天写SQL语句的时候,报错。
语句:
USE DBA;
INSERT INTO SUBJECTDB.ProDefine.ProjectInfo
( Code ,
ProjectCityCode ,
CnName ,
Creator ,
CreateTime ,
ValidStatus ,
SortNo ,
VersionNo,
VersionStartTime
)
SELECT NEWID(),
CITY.Code,
INS.项目名称,
'BDD',
GETDATE(),
'1',
'1',
'1',
GETDATE()
FROM BDD_PROJECTINFO_SHIYAN_INSERT INS
INNER JOIN SUBJECTDB.Common.City CITY ON INS.项目城市 =CITY.CnName
WHERE INS.项目名称 NOT IN(SELECT CnName
FROM SUBJECTDB.ProDefine.ProjectInfo
)
报错:Cannot resolve the collation conflict between "Chinese_PRC_CI_AS" and "SQL_L
出错原因:
两个跨库的表的collation不一致
解决办法:在出错的任意列名后面加上collate chinese_prc_ci_as
例如:
USE DBA;
INSERT INTO SUBJECTDB.ProDefine.ProjectInfo
( Code ,
ProjectCityCode ,
CnName ,
Creator ,
CreateTime ,
ValidStatus ,
SortNo ,
VersionNo,
VersionStartTime
)
SELECT NEWID(),
CITY.Code,
INS.项目名称,
'BDD',
GETDATE(),
'1',
'1',
'1',
GETDATE()
FROM BDD_PROJECTINFO_SHIYAN_INSERT INS
INNER JOIN SUBJECTDB.Common.City CITY ON INS.项目城市 COLLATE chinese_prc_ci_as =CITY.CnName
WHERE INS.项目名称 COLLATE chinese_prc_ci_as NOT IN(SELECT CnName
FROM SUBJECTDB.ProDefine.ProjectInfo
)
语句执行成功之后,插入了一条CREATOR为'BDD',CNNAME为‘在水一方’的数据:
查询:SELECT *
FROM SUBJECTDB.ProDefine.ProjectInfo
WHERE Creator='BDD'
结果:
454ED3D2-B2C1-4D43-BEFD-4D02BD0CB219110000 NULL在水一方 NULL1.0000 1.00001.0000 1.0000BDD 2013-08-30 17:07:35.797NULL NULL1 1 1 2013-08-30 17:07:35.797NULL NULLNULL NULL
但是,我现在用CNNAME=‘在水一方’为条件进行查询,结果竟然是空的。
解决办法:改库的排序规则,将另一个S开头的排序规则改为 Chinese_PRC_CI_AS或者在其他库下面建临时表,跟另个表进行关联。