我想避免在我的代码中有很多像下面这样的检查:
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
子句,其中返回的一些字段将为空,因为LEFT JOIN
表中的匹配记录将不存在。
发布于 2013-06-24 19:50:57
尝尝这个
ifnull(X,Y)
e.g
select ifnull(InfoDetail,'') InfoDetail; -- this will replace null with ''
select ifnull(NULL,'THIS IS NULL');-- More clearly....
ifnull()
函数返回其第一个非空参数的副本,如果两个参数都为空,则返回NULL。Ifnull()
必须恰好有2个参数。ifnull()
函数等同于带有两个参数的coalesce()
。
发布于 2010-12-19 20:45:28
如果没有ISNULL()
方法,可以使用下面的表达式:
CASE WHEN fieldname IS NULL THEN 0 ELSE fieldname END
这与ISNULL(fieldname, 0)
的工作原理相同。
发布于 2016-07-06 15:24:14
在WHERE子句中使用IS NULL
或IS NOT NULL
代替ISNULL()方法:
SELECT myField1
FROM myTable1
WHERE myField1 IS NOT NULL
https://stackoverflow.com/questions/799375
复制相似问题