4

SybaseおよびMSSqlServerTransactSQLには、列の値がnullの場合に型指定されたデフォルト値を返す関数IsNull(columnName、valueForNull)があります。SQLiteでこの機能を複製するにはどうすればよいですか?

TransactSQLの例:

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

MyColumnがnullの場合、この式はMyColumnの値として-1を返します。SQLiteで同様のことをしたい。

(はい、私はこれを処理するために独自のラッパー関数を書くことができることを知っています-それは私が探している答えではありません)

TIA

4

4 に答える 4

7

標準のCOALESCE関数を使用する必要があります。

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

標準のANSISQLを理解するデータベースは、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 に答える