COLLATE sql server的问题

时间:2013-09-19 13:07:49

标签: sql-server collate

我正在尝试加入PRId的2个表。

SELECT LOT_NUMBER 
FROM   Domain.dbo.LOT_TABLE
JOIN   Domain.dbo.SELINAS 
ON     Domain.dbo.SELINAS.PRId = Domain.dbo.LOT_TABLE.PRId;

当我运行它时,它会给我以下错误:

  

无法在等于操作的情况下解决“SQL_Latin1_General_CP1_CI_AS”和“Latin1_General_CI_AI”之间的排序规则冲突。

添加COLLATE不会返回任何内容:

SELECT LOT_NUMBER 
FROM   Domain.dbo.LOT_TABLE
JOIN   Domain.dbo.SELINAS 
  ON   Domain.dbo.SELINAS.PRId = Domain.dbo.LOT_TABLE.PRId 
COLLATE DATABASE_DEFAULT;

我尝试添加Latin1_General_CI_AISQL_Latin1_General_CP1_CI_AS,但它仍然没有返回任何内容。

如果我打开表格列并查看每列的扩展属性,它们看起来都是SQL_Latin1_General_CP1_CI_AS

没有意义......

我添加了

d2rq:join "Domain.dbo.SELINAS.PRId COLLATE DATABASE_DEFAULT => Domain.dbo.LOT_TABLE.PRId COLLATE DATABASE_DEFAULT" ;

就像你建议的那样,找不到Domain.dbo.LOT_TABLE.PRId

1 个答案:

答案 0 :(得分:2)

为两个字段添加collat​​e子句,因为它不会影响比较操作本身,而是影响字段值。

SELECT LOT_NUMBER 
FROM   Domain.dbo.LOT_TABLE
JOIN   Domain.dbo.SELINAS 
  ON   Domain.dbo.SELINAS.PRId COLLATE DATABASE_DEFAULT = Domain.dbo.LOT_TABLE.PRId COLLATE DATABASE_DEFAULT