Если я использую что-то вроде
[ntext2] <> '1,032.5',
, я получаю эту ошибку:
Типы данных ntext и varchar несовместимы в операторе не равно.
Наилучшее возможное решение будет, если сравнение будет реализовано таким же образом для любого типа столбца. (Оператор <> применим как для NVARCHAR, так и для INT).
Тип данных ntext
устарел в пользу типа данных nvarchar (max)
. Если вы можете изменить тип данных в таблице, это будет лучшим решением. Тогда не составит труда сравнить его с литералом varchar
.
В противном случае вам придется преобразовать значение перед его сравнением:
cast([ntext2] as nvarchar(max)) <> '1,032.5'
Вы также можете рассмотреть возможность использования литерала nvarchar, который решает некоторые проблемы с похожими типами данных:
cast([ntext2] as nvarchar(max)) <> N'1,032.5'
Если вы предпочитаете не приводить, в некоторых сценариях можно обойтись использованием 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'