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

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

Сообщение 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. Я не знаю, как это применить.

2 ответа

Решение

Правильный синтаксис выглядит следующим образом. Смотрите 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 

Как правило, вы можете использовать параметры сортировки 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 
Другие вопросы по тегам