web-dev-qa-db-fra.com

Quel est l'équivalent PostgreSQL pour ISNULL ()

Dans MS SQL-Server, je peux faire:

SELECT ISNULL(Field,'Empty') from Table

Mais dans PostgreSQL, je reçois une erreur de syntaxe. Comment émuler la fonctionnalité ISNULL()?

236
Byron Whitlock
SELECT CASE WHEN field IS NULL THEN 'Empty' ELSE field END AS field_alias

Ou plus idiomatique:

SELECT coalesce(field, 'Empty') AS field_alias
425
Kyle Butt

Utilisez COALESCE() à la place:

SELECT COALESCE(Field,'Empty') from Table;

Il fonctionne beaucoup comme ISNULL, mais fournit plus de fonctionnalités. Coalesce renverra la première valeur non nulle de la liste. Ainsi:

SELECT COALESCE(null, null, 5); 

renvoie 5, tandis que

SELECT COALESCE(null, 2, 5);

renvoie 2

Coalesce prendra un grand nombre d'arguments. Il n'y a pas de maximum documenté. J'ai testé 100 arguments et cela a réussi. Cela devrait suffire à la grande majorité des situations.

72
Jim Clouse

Comment puis-je émuler la fonctionnalité ISNULL ()?

SELECT (Field IS NULL) FROM ...
23
Artur

Essayer:

SELECT COALESCE(NULLIF(field, ''), another_field) FROM table_name
15
user2718914