Предложение WHERE в SQL Server Тип данных "Текст"

Где [CastleType] устанавливается как тип данных "текст" в SQL Server, а запрос:

SELECT *
FROM   [Village]
WHERE  [CastleType] = 'foo' 

Я получаю сообщение об ошибке:

Типы данных ТЕКСТ и VARCHAR несовместимы с равным оператору.

Могу ли я не запрашивать этот тип данных с предложением WHERE?

+67
источник поделиться
7 ответов

Вы можете использовать LIKE вместо =. Без каких-либо подстановочных знаков это будет иметь тот же эффект.

DECLARE @Village TABLE
        (CastleType TEXT)

INSERT INTO @Village
VALUES
  (
    'foo'
  )

SELECT *
FROM   @Village
WHERE  [CastleType] LIKE 'foo' 

text устарел. Сменять на varchar(max) будет легче работать.

Также насколько велики данные, которые могут быть? Если вы собираетесь проводить сравнительные сравнения, вам желательно индексировать этот столбец. Это невозможно, если вы объявляете столбец как нечто большее, чем 900 байт, хотя вы можете добавить вычисленный столбец checksum или hash, который можно использовать для ускорения запроса этого типа.

+77
источник

Пожалуйста, попробуйте

SELECT *
FROM   [Village]
WHERE  CONVERT(VARCHAR, CastleType) = 'foo'
+16
источник
другие ответы

Связанные вопросы


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

Вы не можете сравнивать с text с оператором =, но вместо этого должны использовать одну из перечисленных функций сравнения здесь. Также обратите внимание на большой предупреждающий ящик в верхней части страницы, это важно.

+10
источник

Это не то, о чем говорится в сообщении об ошибке. В нем говорится, что вы не можете использовать оператор =. Попробуйте, например, LIKE 'foo'.

+2
источник

Если вы не можете изменить тип данных в самой таблице, чтобы использовать varchar (max), измените свой запрос на это:

SELECT *
FROM   [Village]
WHERE  CONVERT(VARCHAR(MAX), [CastleType]) = 'foo'
+2
источник

Другой вариант:

SELECT * FROM [Village] WHERE PATINDEX('foo', [CastleType]) <> 0
0
источник

Я использую MySQL, и этот запрос работает для меня:

SELECT *
FROM   @Village
WHERE  CastleType LIKE '%foo%'; 
-2
источник

Посмотрите другие вопросы по меткам или Задайте вопрос