Как использовать COLLATE в JOIN на SQL Server?

Я пытаюсь присоединиться к двум таблицам, но я получаю эту ошибку:

Msg 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. Я не знаю, как его применять.

Ответ 1

Правильный синтаксис выглядит так. См. 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 

Ответ 2

Как правило, вы можете использовать параметры сортировки Database_Default, поэтому вам не нужно выяснять, какой из них использовать. Тем не менее, я настоятельно рекомендую прочитать прекрасную статью Саймонса Лью. Понимание предложения COLLATE DATABASE_DEFAULT в SQL Server.

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