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

Ozz*_*zzy 24 sql postgresql syntax ternary-operator

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

field1 and field2
Run Code Online (Sandbox Code Playgroud)

我想选择它们 complete_field

IF field1 is empty, then complete_field is field2
ELSE complete_field is field1
Run Code Online (Sandbox Code Playgroud)

在PHP中它将完成如下:

$complete_field = $field1 == '' ? $field2 : $field1;
Run Code Online (Sandbox Code Playgroud)

我将如何在PostgreSQL中执行此操作?

我试过了:

SELECT
(IF field1 = '' THEN field2 ELSE field1) AS complete_field
FROM
table
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

请帮帮我:)谢谢

Mar*_*ani 32

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

SELECT 
(CASE WHEN (field1 IS NULL OR field1 = '') THEN field2 ELSE field1 END)
FROM table;
Run Code Online (Sandbox Code Playgroud)

官方文档中查看.


dez*_*zso 28

尝试COALESCENULLIF:

SELECT COALESCE(NULLIF(field1, ''), field2) AS the_field FROM my_table;
Run Code Online (Sandbox Code Playgroud)


Dav*_*dge 5

所需的是ANSI SQL函数Coalesce()。

 select Coalesce(field1,field2)
 from   table;
Run Code Online (Sandbox Code Playgroud)

  • 显然,“field1”可能是一个空字符串,在这种情况下,OP 不需要它的值,而是需要“field2”的值。 (2认同)