Подтвердить что ты не робот

Каков правильный способ сравнения столбца NTEXT с постоянным значением?

Если я использую что-то вроде

[ntext2] <> '1,032.5',

Я получаю эту ошибку:

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

Лучшим возможным решением было бы, если бы сравнение было реализовано одинаково для любого типа столбца. (< > применим как для NVARCHAR, так и для INT).

4b9b3361

Ответ 1

Тип данных ntext устарел в пользу типа данных nvarchar(max). Если вы можете изменить тип данных в таблице, это было бы лучшим решением. Тогда нет никакой проблемы, сравнивая его с литералом varchar.

В противном случае вам нужно будет указать значение перед его сравнением:

cast([ntext2] as nvarchar(max)) <> '1,032.5'

Вы также можете использовать литерал nvarchar, который решает некоторые подобные проблемы с типом данных:

cast([ntext2] as nvarchar(max)) <> N'1,032.5'

Ответ 2

Если вы предпочтете не выполнять бросок, вы можете пройти в некоторых сценариях, используя LIKE или PATINDEX, как показано в этом потоке MSDN: http://social.msdn.microsoft.com/Forums/en-US/transactsql/thread/6bd4c661-ea0b-435f-af78-097e61549d41

Выражение LIKE без подстановочных знаков будет (в данном случае) примерно эквивалентным тесту для равенства.

В этом случае выражение будет выглядеть следующим образом:

[ntext2] NOT LIKE '1,032.5'