我想避免在我的代码中进行如下的许多检查:
myObj.someStringField = rdr.IsDBNull(someOrdinal) ? string.Empty : rdr.GetString(someOrdinal);
我想我可以让我的查询通过执行以下操作来处理空值:
SELECT myField1, [isnull](myField1, '') FROM myTable1 WHERE myField1 = someCondition
我虽然使用SQLite,但似乎没有认识到这个isnull
功能.我也试过其他数据库中的一些公认的那些等效(NVL()
,IFNULL()
和COALESCE()
),但SQLite的似乎不认识任何人.
有没有人有任何建议或知道更好的方法来做到这一点.不幸的是,数据库没有所有字段的默认值.另外,LEFT JOIN
在某些情况下我需要使用一些子句,其中返回的某些字段将为null,因为LEFT JOIN
表中的匹配记录将不存在.
IFNULL
,见这里:http://www.sqlite.org/lang_corefunc.html#ifnull
功能周围没有括号
试试这个
ifnull(X,Y)
例如
select ifnull(InfoDetail,'') InfoDetail; -- this will replace null with '' select ifnull(NULL,'THIS IS NULL');-- More clearly....
该ifnull()
函数返回其第一个非NULL参数的副本,如果两个参数均为NULL,则返回NULL.Ifnull()
必须有两个参数.该ifnull()
函数相当于coalesce()
两个参数.
如果没有ISNULL()
方法,则可以使用此表达式:
CASE WHEN fieldname IS NULL THEN 0 ELSE fieldname END
这与以下相同ISNULL(fieldname, 0)
.