当我尝试在 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
我尝试使用下面的语句来检查记录的给定字段名中存在的值是否为 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