Dans MS SQL-Server, je peux faire:
SELECT ISNULL(Field,'Empty') from Table
Mais dans PostgreSQL, j'obtiens une erreur de syntaxe. Comment émuler la ISNULL()
fonctionnalité?
Dans MS SQL-Server, je peux faire:
SELECT ISNULL(Field,'Empty') from Table
Mais dans PostgreSQL, j'obtiens une erreur de syntaxe. Comment émuler la ISNULL()
fonctionnalité?
Réponses:
SELECT CASE WHEN field IS NULL THEN 'Empty' ELSE field END AS field_alias
Ou plus idiomatique:
SELECT coalesce(field, 'Empty') AS field_alias
coalesce
. (PS Vous pouvez aussi le faire dans MS SQL Server.)
coalesce
en standard SQL, avec isnull
une fonction spécifique à MS qui est essentiellement coalesce
avec seulement deux paramètres.
Utilisez COALESCE()
plutôt:
SELECT COALESCE(Field,'Empty') from Table;
Il fonctionne de la même manière ISNULL
, mais offre plus de fonctionnalités. Coalesce renverra la première valeur non nulle de la liste. Donc:
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é ça va 100 arguments et ça a réussi. Cela devrait être suffisant pour la grande majorité des situations.
Comment émuler la fonctionnalité ISNULL ()?
SELECT (Field IS NULL) FROM ...
Essayer:
SELECT COALESCE(NULLIF(field, ''), another_field) FROM table_name
Créez la fonction suivante
CREATE OR REPLACE FUNCTION isnull(text, text) RETURNS text AS 'SELECT (CASE (SELECT $1 "
"is null) WHEN true THEN $2 ELSE $1 END) AS RESULT' LANGUAGE 'sql'
Et ça marchera.
Vous pouvez créer différentes versions avec différents types de paramètres.
ISNULL
prend deux arguments et renvoie le second est le premier estnull
, sinon le premier.