2012-12-05 109 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; 
相关问题