当前位置:  开发笔记 > 前端 > 正文

SQLite相当于ISNULL(),NVL(),IFNULL()或COALESCE()

如何解决《SQLite相当于ISNULL(),NVL(),IFNULL()或COALESCE()》经验,为你挑选了3个好方法。

我想避免在我的代码中进行如下的许多检查:

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表中的匹配记录将不存在.



1> SQLMenace..:

IFNULL,见这里:http://www.sqlite.org/lang_corefunc.html#ifnull

功能周围没有括号



2> Hardik Darji..:

试试这个

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()两个参数.



3> 小智..:

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

CASE WHEN fieldname IS NULL THEN 0 ELSE fieldname END

这与以下相同ISNULL(fieldname, 0).


@sethflowers我可以看到以更RDBMS中立的方式实现null默认值的值,但这是对另一个问题的答案。:) OP仅要求在其他系统中使用SQLite等同于`isnull`,而我不想鼓励人们“自己动手”。
推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有