4

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

TransactSQL 中的示例:

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

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

(是的,我知道我可以编写自己的包装函数来处理这个问题——这不是我要找的答案)

TIA

4

4 回答 4

7

您应该使用标准的COALESCE 函数

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

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

于 2011-11-03T18:08:55.250 回答
6

您可以使用ifnull

select ifnull(MyColumn,-1) as MyColumn from MyTable
于 2011-11-03T17:54:36.423 回答
3

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

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

比引擎特定的 IFNULL、ISNULL、NZ 函数更详细,但更便携。

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

于 2011-11-03T18:09:30.247 回答
2

SQLite 有IFNULL()内置函数,它可以做我认为你在这里尝试的事情。

于 2011-11-03T17:55:54.333 回答