Не может разрешить конфликт сопоставления в выборе Объединения

У меня есть два запроса:

Сначала не работает:

select hotels.TargetCode as TargetCode from hotels
union all 
select DuplicatedObjects.duplicatetargetCode as TargetCode 
from DuplicatedObjects where DuplicatedObjects.objectType=4

потому что я получаю ошибку:

Cannot resolve collation conflict for column 1 in SELECT statement.

Вторые работы:

select hotels.Code from hotels where hotels.targetcode is not null 
union all 
select DuplicatedObjects.duplicatetargetCode as Code 
from DuplicatedObjects where DuplicatedObjects.objectType=4 

Структура:

Hotels.Code -PK nvarchar(40)
Hotels.TargetCode - nvarchar(100)

DuplicatedObjects.duplicatetargetCode PK nvarchar(100)
10
задан John Sibly 30 January 2011 в 10:05
поделиться

1 ответ

Используйте sp_help в обеих таблицах. Сопоставление для hotels.TargetCode отличается от сопоставления для DuplicatedObjects.duplicateTargetCode , поэтому БД не знает, что делать с результирующим UNION .

Вы можете принудительно установить новое сопоставление для одного из них, чтобы оно соответствовало другому, или поместить результаты в заранее определенную временную таблицу / таблицу, для которой уже будет определено сопоставление.

РЕДАКТИРОВАТЬ: Вы можете переопределить существующее сопоставление, используя что-то вроде ...

DuplicatedObjects.duplicateTargetCode COLLATE SQL_Latin1_General_CP1_CI_AS

... в запросе. Это будет использовать duplicateTargetCode с сопоставлением SQL_Latin1_General_CP1_CI_AS . Следует выбрать сопоставление, соответствующее параметрам hotels.TargetCode .

9
ответ дан 3 December 2019 в 15:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: