相当于ISNULL(),NVL(),IFNULL()或COALESCE()
我想避免在我的代码中有如下的许多检查:
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似乎没有认出它们中的任何一个。
有没有人有任何build议或知道更好的方法来做到这一点。 不幸的是,数据库没有所有字段的默认值。 另外,在某些情况下,我需要使用一些LEFT JOIN
子句,其中一些返回的字段将为空,因为LEFT JOIN
表中的匹配logging将不存在。
IFNULL
,请参阅此处: http : IFNULL
function周围没有括号
尝试这个
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()
必须有2个参数。 ifnull()
函数等同于具有两个参数的coalesce()
。
如果没有ISNULL()
方法,则可以使用这个expression式:
CASE WHEN fieldname IS NULL THEN 0 ELSE fieldname END
这与ISNULL(fieldname, 0)
。
在WHERE子句中使用IS NULL
或IS NOT NULL
而不是ISNULL()方法:
SELECT myField1 FROM myTable1 WHERE myField1 IS NOT NULL
你可以很容易地定义这样的function,然后使用它:
ifnull <- function(x,y) { if(is.na(x)==TRUE) return (y) else return (x); }
或相同的缩小版本:
ifnull <- function(x,y) {if(is.na(x)==TRUE) return (y) else return (x);}