Question PostgreSQL: Sélectionnez l'un des deux champs en fonction de ce qui est vide


Bonjour, j'ai une requête où je veux sélectionner la valeur de l'un des deux champs selon que l'on 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 ferais-je cela dans PostgreSQL?

J'ai essayé:

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

Mais ça ne marche pas.

Aidez-moi s'il vous plaît :) Merci


12
2017-12-05 12:30


origine


Réponses:


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

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

Vérifiez-le à les documents officiels.


20
2017-12-05 12:41



Essayer COALESCE avec NULLIF:

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

16
2017-12-06 20:13



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

 select Coalesce(field1,field2)
 from   table;

2
2017-12-05 12:44