2012-12-05 142 views
11

你好我有一個查詢,我想選擇兩個字段之一的值,這取決於是否爲空。PostgreSQL:根據哪一個爲空選擇兩個字段之一

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 

但它不工作。

請幫我:)謝謝

+1

'SELECT COALESCE(FIELD1,FIELD2)AS the_field FROM MY_TABLE;'會的工作,如果領域是NULL。它們真的是空字符串而不是NULL嗎? – wildplasser

回答

17

使用CASE WHEN .. THEN .. ELSE .. END,例如:

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

瞧瞧吧the official docs

2

ANSI SQL函數Coalesce()是你想要的。

select Coalesce(field1,field2) 
from table; 
+0

顯然'field1'可能是一個空字符串,在這種情況下,OP不需要它的值,而是'field2'的值。 –

+1

呃。最近從Oracle轉換而來,我不喜歡這個空字符串是非空malarkey。 –

14

嘗試COALESCENULLIF

SELECT COALESCE(NULLIF(field1, ''), field2) AS the_field FROM my_table; 
相關問題