Подтвердить что ты не робот

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

Но он не работает.

Пожалуйста, помогите мне:) Спасибо

4b9b3361

Ответ 1

Используйте CASE WHEN .. THEN .. ELSE .. END, например:

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

Посмотрите на официальные документы.

Ответ 2

Попробуйте COALESCE с NULLIF:

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

Ответ 3

Функция ANSI SQL Coalesce() - это то, что вы хотите.

 select Coalesce(field1,field2)
 from   table;