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

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

[ntext2] <> '1,032.5',

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

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

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

60
задан Alex Angas 3 November 2015 в 00:39
поделиться

2 ответа

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

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

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

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

cast([ntext2] as nvarchar(max)) <> N'1,032.5'
67
ответ дан 24 November 2019 в 17:52
поделиться

Если вы предпочитаете не приводить, в некоторых сценариях можно обойтись использованием 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'
12
ответ дан 24 November 2019 в 17:52
поделиться