MS SQL-Serverでは、次のことができます。
SELECT ISNULL(Field,'Empty') from Table
しかしPostgreSQLでは構文エラーが出ます。 ISNULL()
機能をどのようにエミュレートするのですか?
SELECT CASE WHEN field IS NULL THEN 'Empty' ELSE field END AS field_alias
もっと慣用句:
SELECT coalesce(field, 'Empty') AS field_alias
代わりにCOALESCE()
を使用してください。
SELECT COALESCE(Field,'Empty') from Table;
これはISNULL
とよく似た機能を果たしますが、より多くの機能を提供します。 Coalesceはリストの最初のNULLでない値を返します。したがって:
SELECT COALESCE(null, null, 5);
5を返します。
SELECT COALESCE(null, 2, 5);
2を返します
Coalesceは多数の引数を取ります。文書化された最大数はありません。私はそれを100個の引数でテストし、成功しました。これは、大部分の状況にとって十分なはずです。
ISNULL()機能をエミュレートする方法
SELECT (Field IS NULL) FROM ...
試してください:
SELECT COALESCE(NULLIF(field, ''), another_field) FROM table_name