Jas*_*own 85 .net sqlite dbnull
我想避免在我的代码中进行如下的许多检查:
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表中的匹配记录将不存在.
SQL*_*ace 121
IFNULL,见这里:http://www.sqlite.org/lang_corefunc.html#ifnull
功能周围没有括号
Har*_*rji 38
试试这个
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()两个参数.
小智 24
如果没有ISNULL()方法,则可以使用此表达式:
CASE WHEN fieldname IS NULL THEN 0 ELSE fieldname END
这与以下相同ISNULL(fieldname, 0).
对于 NVL() 和 ISNULL() 的等效项,请使用:
IFNULL(column, altValue)
column:您正在评估的列。
altValue:当“column”为空时要返回的值。
例子:
SELECT IFNULL(middle_name, 'N/A') FROM person;
*注意:COALESCE() 函数的工作方式与其他数据库相同。
资料来源:
在 WHERE 子句中使用IS NULLorIS NOT NULL代替 ISNULL() 方法:
SELECT myField1
FROM myTable1
WHERE myField1 IS NOT NULL
| 归档时间: | 
 | 
| 查看次数: | 146193 次 | 
| 最近记录: |