web-dev-qa-db-fra.com

PostgreSQL: sélectionnez l'un des deux champs en fonction de celui qui est vide

Bonjour, j'ai une requête dans laquelle je souhaite sélectionner la valeur de l'un des deux champs selon que l'un est vide.

field1 and field2

Je veux les sélectionner comme complete_field

IF field1 is empty, then complete_field is field2
ELSE complete_field is field1

En php cela se ferait comme:

$complete_field = $field1 == '' ? $field2 : $field1;

Comment pourrais-je faire cela dans PostgreSQL?

J'ai essayé:

SELECT
(IF field1 = '' THEN field2 ELSE field1) AS complete_field
FROM
table

Mais ça ne marche pas.

S'il vous plaît, aidez-moi :) Merci

26
Ozzy

Utilisation CASE WHEN .. THEN .. ELSE .. END, par exemple.:

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

Découvrez-le sur les documents officiels .

31
Marcelo Zabani

Essayez COALESCE avec NULLIF :

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

La fonction ANSI SQL Coalesce () est ce que vous voulez.

 select Coalesce(field1,field2)
 from   table;
4
David Aldridge