web-dev-qa-db-ja.com

PostgreSQL:空のフィールドに応じて、2つのフィールドのいずれかを選択します

こんにちは、2つのフィールドのうち1つが空かどうかに応じて、その1つの値を選択するクエリがあります。

field1 and field2

complete_fieldとして選択します

IF field1 is empty, then complete_field is field2
ELSE complete_field is field1

PHPではそれは次のように行われます:

$complete_field = $field1 == '' ? $field2 : $field1;

PostgreSQLでこれをどのように実行しますか?

私は試した:

SELECT
(IF field1 = '' THEN field2 ELSE field1) AS complete_field
FROM
table

しかし、それは機能しません。

助けてください:)ありがとう

26
Ozzy

使用する CASE WHEN .. THEN .. ELSE .. END、例:

SELECT 
(CASE WHEN (field1 IS NULL OR field1 = '') THEN field2 ELSE field1 END)
FROM table;

公式ドキュメント で確認してください。

31
Marcelo Zabani

COALESCENULLIF を試してください:

SELECT COALESCE(NULLIF(field1, ''), field2) AS the_field FROM my_table;
28
dezso

ANSI SQL関数Coalesce()が必要です。

 select Coalesce(field1,field2)
 from   table;
4
David Aldridge