我想避免在我的代码中进行以下检查之类的检查:

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 表将不存在。

有帮助吗?

解决方案

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() 必须完全有2个参数。这 ifnull() 功能等效于 coalesce() 有两个论点。

如果没有 ISNULL() 方法,您可以使用此表达式:

CASE WHEN fieldname IS NULL THEN 0 ELSE fieldname END

这与 ISNULL(fieldname, 0).

利用 IS NULL 或者 IS NOT NULL 在where子中而不是isnull()方法:

SELECT myField1
FROM myTable1
WHERE myField1 IS NOT NULL

对于NVL()和ISNULL()的等效词,请使用:

IFNULL(column, altValue)

column :您正在评估的列。

altValue :如果“列”为null,您要返回的值。

例子:

SELECT IFNULL(middle_name, 'N/A') FROM person;

*注意:cocece()函数的工作原理与其他数据库相同。

资料来源:

您可以轻松地定义此功能并使用它:

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);}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top