如何在SQL Server的JOIN中使用COLLATE?

时间:2016-09-02 21:30:23

标签: sql-server join collate

我正在尝试加入两个表,但是我收到了这个错误:

  

消息468,级别16,状态9,行8无法解决“SQL_Latin1_General_CP1_CI_AS”与“SQL_Latin1_General_CP1_CI_AS”之间的排序规则冲突   “Latin1_General_CI_AS”等于操作。

这是我使用的代码:

 SELECT *

  FROM [FAEB].[dbo].[ExportaComisiones] AS f

  JOIN [zCredifiel].[dbo].[optPerson] AS p

  ON (p.vTreasuryId = f.RFC) COLLATE Latin1_General_CI_AS 

我知道这是错误的,它强调 COLLATE 。我不知道如何应用它。

2 个答案:

答案 0 :(得分:27)

正确的语法如下所示。请参阅MSDN

SELECT *
  FROM [FAEB].[dbo].[ExportaComisiones] AS f
  JOIN [zCredifiel].[dbo].[optPerson] AS p

  ON p.vTreasuryId COLLATE Latin1_General_CI_AS = f.RFC COLLATE Latin1_General_CI_AS 

答案 1 :(得分:3)

作为一般规则,您可以使用 Database_Default 排序规则,因此您无需弄清楚要使用哪个排序规则。但是,我强烈建议您阅读Simons Liew的出色文章Understanding the COLLATE DATABASE_DEFAULT clause in SQL Server

SELECT *
  FROM [FAEB].[dbo].[ExportaComisiones] AS f
  JOIN [zCredifiel].[dbo].[optPerson] AS p
  ON (p.vTreasuryId = f.RFC) COLLATE Database_Default