SQLite中的空替换:

时间:2011-11-03 17:52:21

标签: tsql sqlite null isnull

在Sybase和MSSqlServer TransactSQL中,我们有一个函数IsNull(columnName,valueForNull),当列值为null时返回一个类型化的默认值。如何在SQLite中复制此功能?

TransactSQL中的示例:

select IsNull(MyColumn,-1) as MyColumn from MyTable

如果MyColumn为null,则此表达式将返回-1作为MyColumn的值。想在SQLite中做类似的事情。

(是的,我知道我可以编写自己的包装函数来处理这个 - 这不是我正在寻找的答案)

TIA

4 个答案:

答案 0 :(得分:7)

您应该使用标准COALESCE function

select coalesce(MyColumn, -1) as MyColumn from MyTable

任何理解标准ANSI SQL的数据库都支持COALESCE,因此使用它是一个很好的习惯。

答案 1 :(得分:6)

您可以使用ifnull

select ifnull(MyColumn,-1) as MyColumn from MyTable

答案 2 :(得分:3)

执行此操作的SQL标准方法是使用CASE:

 SELECT CASE WHEN MyColumn IS NULL THEN -1 ELSE MyColumn END FROM MyTable

比发动机专用的IFNULL,ISNULL,NZ功能更加冗长,但更便携。

(或者,正如mu指出的那样,你可以使用更好的COALESCE)。

答案 3 :(得分:2)

SQLite具有IFNULL()内置函数,可以执行我认为您在此处尝试的内容。