SQL INNER JOIN для текстовых столбцов - PullRequest
2 голосов
/ 30 сентября 2011

У меня есть две таблицы (оборудование и программное обеспечение), для которых я хочу сделать INNER JOIN.Они оба имеют поле под названием EQCN.Это текстовое поле.Я получаю следующее сообщение об ошибке:

Типы данных text и text несовместимы в операторе равенства оператор.

Ответы [ 3 ]

4 голосов
/ 30 сентября 2011

Измените типы данных для этих столбцов на varchar(max).

От Microsoft :

Типы данных ntext, text и image будут удалены в следующей версии Microsoft SQL Server. Избегайте использования этих типов данных в новых разработки и планируют модифицировать приложения, которые в настоящее время используют их. Вместо этого используйте nvarchar (max), varchar (max) и varbinary (max).

1 голос
/ 30 сентября 2011

Хотя это странно, Microsoft предлагает сделать косвенное сравнение текста или текста, используя что-то вроде SUBSTRING. Пример:

SELECT * 
FROM t1 
JOIN t2 ON SUBSTRING(t1.textcolumn, 1, 20) = SUBSTRING(t2.textcolumn, 1, 20)

Это, конечно, поднимает целый ряд других проблем, таких как: что, если первые # символов идентичны, и т. Д. Я бы посоветовал пойти по пути изменения типа, если вы можете сначала, вместо того, чтобы воспользоваться этим советом.

Источник

0 голосов
/ 30 сентября 2011

Выполнение объединения в поле TEXT будет ОЧЕНЬ медленным, даже если это сработает.Возможно использование:

CONVERT(varchar, myColumnName) = 'my value'
...