31

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

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

但它不起作用。

请帮助我:)谢谢

4

3 回答 3

51

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

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

在官方文档中查看。

于 2012-12-05T12:41:06.857 回答
40

尝试:COALESCE_NULLIF

SELECT COALESCE(NULLIF(field1, ''), field2) AS the_field FROM my_table;
于 2012-12-06T20:13:20.263 回答
8

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

 select Coalesce(field1,field2)
 from   table;
于 2012-12-05T12:44:17.343 回答