2015-02-25 3 views
0

Я пробовал нижеследующее, но пересечение не работает со следующими ошибками Текст типа данных не может использоваться в качестве операнда для операторов UNION, INTERSECT или EXCEPT, потому что он не сопоставим.intersect cast error

SELECT * FROM TableA 
INTERSECT 
SELECT * FROM TableB 

Любая идея?

+0

В ваших таблицах содержатся данные типа «Текст», которые вы должны преобразовать в «varchar» –

ответ

0

Если вы читали MSDN Они упоминают, что

Спецификация запроса или выражение не может возвращать XML, текст, NTEXT, изображение или Недвоичные CLR, определяемые пользователем столбцы типа, так как эти данные типы не сопоставимы ,

Используйте что-то вроде cast(textcolumnname as nvarchar(2000)) как textcolumnname вместо text имен полей.

Я не думаю, что есть какой-либо другой способ сделать это, если вы хотите использовать INTERSECT, вам нужно преобразовать этот тип данных в varchar.
Другой способ - использовать INNER JOIN с DISTINCT, который даст вам тот же результат, что и INTERSECT. Here is the detail description how to achive intersect with Inner join

+0

. Я не могу позволить себе изменять тип данных столбца таблицы, поскольку их слишком много. Любой способ изменить тип данных на varchar во время выполнения? Я ищу в Интернете по этому поводу – VeecoTech

+0

Проверьте обновление. –

+0

use CAST (textcol as varchar (8000)) –