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

D.R*_*oca 16 sql-server join collate

我试图加入两个表,但我收到此错误:

消息468,级别16,状态9,行8无法解决等于操作中"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 
Run Code Online (Sandbox Code Playgroud)

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

Ale*_*hev 34

正确的语法如下所示.请参阅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 
Run Code Online (Sandbox Code Playgroud)


Jul*_*bre 5

通常,您可以使用Database_Default排序规则,因此您无需弄清楚要使用哪个排序规则。但是,我强烈建议阅读Simons Liew的出色文章,了解SQL Server中的COLLATE DATABASE_DEFAULT子句

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