web-dev-qa-db-ja.com

ISNULL()と同等のPostgreSQLとは何ですか

MS SQL-Serverでは、次のことができます。

SELECT ISNULL(Field,'Empty') from Table

しかしPostgreSQLでは構文エラーが出ます。 ISNULL()機能をどのようにエミュレートするのですか?

233
Byron Whitlock
SELECT CASE WHEN field IS NULL THEN 'Empty' ELSE field END AS field_alias

もっと慣用句:

SELECT coalesce(field, 'Empty') AS field_alias
418
Kyle Butt

代わりにCOALESCE()を使用してください。

SELECT COALESCE(Field,'Empty') from Table;

これはISNULLとよく似た機能を果たしますが、より多くの機能を提供します。 Coalesceはリストの最初のNULLでない値を返します。したがって:

SELECT COALESCE(null, null, 5); 

5を返します。

SELECT COALESCE(null, 2, 5);

2を返します

Coalesceは多数の引数を取ります。文書化された最大数はありません。私はそれを100個の引数でテストし、成功しました。これは、大部分の状況にとって十分なはずです。

72
Jim Clouse

ISNULL()機能をエミュレートする方法

SELECT (Field IS NULL) FROM ...
23
Artur

試してください:

SELECT COALESCE(NULLIF(field, ''), another_field) FROM table_name
14
user2718914