openlang

Сравнение поля NTEXT с фиксированным значением без ошибок типов

Когда я пробую выражение вроде

[longtext3] <> '2,048.6',

появляется следующая ошибка:

The data types ntext and varchar are incompatible in the not equal to operator.

В идеале сравнение должно работать одинаково независимо от типа столбца. (Оператор <> работает и с INT, и с NVARCHAR).

Переведено с английскогоПоказать оригинал

Разговор продолжается 2

Следуя доводам
  1. Ссылка на ответ

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

    Иначе перед сравнением придётся привести значение:

    cast([longtext3] as nvarchar(max))
      <> '2,048.6'

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

    cast([longtext3] as nvarchar(max))
      <> N'2,048.6'
    Переведено с английскогоПоказать оригинал
  2. Ссылка на ответ

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

    Без подстановочных знаков выражение LIKE здесь примерно соответствует проверке на равенство.

    Для этого конкретного примера и сравнения запись будет такой:

    [longtext3] NOT LIKE
      '2,048.6'
    Переведено с английскогоПоказать оригинал

Другие стороны того же вопроса

  1. Недоступное поле производной таблицы в SQL

    Я выполняю следующий SQL-запрос: Он выдаёт такую ошибку: #1054 - Unknown column 'shipping.post_id' in 'on clause'. Код выгляд…

    Ответы 2Последняя активность sql
  2. Проверка наличия подходящего элемента в массиве D

    для ассоциативных массивов можно так а как сделать это с обычным массивом? Мне нужно выражение для проверки, например

    Ответы 2Последняя активность d
  3. Безопасное удаление необязательного столбца в PostgreSQL 9+

    Хочу удалить столбец из таблицы. Как определить, существует ли этот столбец? Прочитал страницу руководства https://www.postgr…

    Ответы 2Последняя активность sql