#c #sqlite #coalesce
#c #sqlite #объединяться
Вопрос:
Я попытался использовать приведенную ниже инструкцию, чтобы проверить, присутствует ли значение в данном имени поля для записи NULL
или нет, если оно NULL
затем помещено 0
, то верните значение, присутствующее в имени поля. Это показывает синтаксическую ошибку.
SELECT [structname.fieldname], isnull([structname.fieldname],0) FROM tablename WHERE condition;
Не могли бы вы, пожалуйста, дать мне знать, в чем я ошибаюсь?
Я также попробовал следующее утверждение
SELECT [structname.fieldname], CASE WHEN [structname.fieldname] IS NULL THEN 0 ELSE [structname.fieldname] END FROM tablename WHERE condition;
Для приведенного выше утверждения программа завершает работу при обнаружении NULL
значения. Не могли бы вы, пожалуйста, сказать мне, как еще я могу проверить, является ли значение определенной записи NULL
или нет, а затем прочитать значение, если это не NULL
так, прочитайте его как 0
Комментарии:
1. Что такое
structname
?
Ответ №1:
Вы неправильно используете квадратные скобки.
Имена столбцов должны быть написаны следующим образом:
[structname].[fieldname]
предполагая, что [structname]
это имя или псевдоним таблицы, из которой fieldname
происходит, а не как:
[structname.fieldname]
что было бы нормально, только если имя столбца на самом деле structname.fieldname
.
То, что вам нужно, можно сделать с помощью функции COALESCE()
:
SELECT COALESCE([fieldname], 0) FROM tablename
Комментарии:
1. Привет, спасибо. Ваше предложение работает на меня правильно. Имя моей колонки находится в формате structname. имя поля