当我尝试在 C 中使用 sqlite 读取 NULL 值时,我的程序崩溃了

My program crashes when I try to read a NULL value using sqlite in C

我尝试使用下面的语句来检查记录的给定字段名中存在的值是否为 NULL,如果是 NULL 则输入 0 else return 字段名中存在的值。 它显示语法错误。

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

你没有正确使用方括号。

列名应该这样写:

[structname].[fieldname]

假设 [structname]fieldname 来自的 table 的名称或别名,并且 不是 像:

[structname.fieldname]

仅当列的名称实际上是 structname.fieldname.

时才可以

你需要的可以用函数COALESCE():

完成
SELECT COALESCE([fieldname], 0) FROM tablename