Моя программа выходит из строя, когда я пытаюсь прочитать нулевое значение с помощью sqlite на C

#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. имя поля