Null substitution in SQLite:

2019-06-28 03:55发布

In Sybase and MSSqlServer TransactSQL, we have a function IsNull(columnName,valueForNull) to return a typed default value when a column value is null. How can I replicate this functionality in SQLite?

Example in TransactSQL:

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

If MyColumn is null, this expression will return -1 as the value of MyColumn. Want to do something similar in SQLite.

(Yes, I know I can write my own wrapper function to handle this - that's not the answer I'm looking for)

TIA

4条回答
Viruses.
2楼-- · 2019-06-28 04:42

You should use the standard COALESCE function:

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

Any database that understands standard ANSI SQL will support COALESCE so using it is a good habit to get into.

查看更多
Evening l夕情丶
3楼-- · 2019-06-28 04:54

SQLite has the IFNULL() built-in function which would do what I think you're trying here.

查看更多
虎瘦雄心在
4楼-- · 2019-06-28 04:55

You can use ifnull:

select ifnull(MyColumn,-1) as MyColumn from MyTable
查看更多
ゆ 、 Hurt°
5楼-- · 2019-06-28 04:58

The SQL standard way to do this is with CASE:

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

Considerably more verbose than engine-specific IFNULL, ISNULL, NZ functions, but more portable.

(Or, as mu points out, you can use the much better COALESCE for this).

查看更多
登录 后发表回答