Cannot resolve the collation conflict between "Chinese_PRC_CI_AS" and "SQL_L及由于排序规则不同导致查询结果为空的问题

今天写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或者在其他库下面建临时表,跟另个表进行关联。



你可能感兴趣的:(3,SQL,SERVER,学习)