26

我正在尝试加入两个表,但出现此错误:

消息 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 

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

4

2 回答 2

58

正确的语法如下所示。请参阅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 
于 2016-09-02T21:50:05.197 回答
8

作为一般规则,您可以使用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 
于 2018-07-13T11:12:56.370 回答