首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SQLite等价于ISNULL()、NVL()、IFNULL()或COALESCE()

SQLite等价于ISNULL()、NVL()、IFNULL()或COALESCE()
EN

Stack Overflow用户
提问于 2009-04-28 18:57:21
回答 4查看 181.4K关注 0票数 99

我想避免在我的代码中有很多像下面这样的检查:

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

EN

回答 4

Stack Overflow用户

发布于 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()

票数 45
EN

Stack Overflow用户

发布于 2010-12-19 20:45:28

如果没有ISNULL()方法,可以使用下面的表达式:

CASE WHEN fieldname IS NULL THEN 0 ELSE fieldname END

这与ISNULL(fieldname, 0)的工作原理相同。

票数 29
EN

Stack Overflow用户

发布于 2016-07-06 15:24:14

在WHERE子句中使用IS NULLIS NOT NULL代替ISNULL()方法:

SELECT myField1
FROM myTable1
WHERE myField1 IS NOT NULL
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/799375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档