PostgreSQL:根据哪个字段为空,选择两个字段中的一个

时间:2012-12-05 12:30:26

标签: sql postgresql syntax ternary-operator

您好我有一个查询,我想根据一个是否为空来选择两个字段之一的值。

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

但它不起作用。

请帮帮我:)谢谢

3 个答案:

答案 0 :(得分:28)

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

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

the official docs处查看。

答案 1 :(得分:25)

使用COALESCE尝试NULLIF

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

答案 2 :(得分:4)

ANSI SQL函数Coalesce()就是您想要的。

 select Coalesce(field1,field2)
 from   table;