Как использовать 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