In MS SQL-Server, posso fare:
SELECT ISNULL(Field,'Empty') from Table
Ma in PostgreSQL ottengo un errore di sintassi. Come posso emulare la ISNULL()funzionalità?
In MS SQL-Server, posso fare:
SELECT ISNULL(Field,'Empty') from Table
Ma in PostgreSQL ottengo un errore di sintassi. Come posso emulare la ISNULL()funzionalità?
Risposte:
SELECT CASE WHEN field IS NULL THEN 'Empty' ELSE field END AS field_alias
O più idiomatico:
SELECT coalesce(field, 'Empty') AS field_alias
coalesce. (PS Puoi farlo anche in MS SQL Server.)
coalesceè nello standard SQL, isnullessendo una funzione specifica per MS che essenzialmente ha coalescesolo due parametri.
Usa COALESCE()invece:
SELECT COALESCE(Field,'Empty') from Table;
Funziona in modo molto simile ISNULL, sebbene fornisca più funzionalità. Coalesce restituirà il primo valore non nullo nell'elenco. Così:
SELECT COALESCE(null, null, 5);
restituisce 5, mentre
SELECT COALESCE(null, 2, 5);
restituisce 2
Coalesce prenderà un gran numero di argomenti. Non esiste un massimo documentato. Ho testato 100 argomenti e ci è riuscito. Questo dovrebbe essere sufficiente per la stragrande maggioranza delle situazioni.
Come posso emulare la funzionalità ISNULL ()?
SELECT (Field IS NULL) FROM ...
Provare:
SELECT COALESCE(NULLIF(field, ''), another_field) FROM table_name
Creare la seguente funzione
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'
E funzionerà.
È possibile creare versioni diverse con tipi di parametri diversi.
ISNULLaccetta due argomenti e restituisce il secondo è il primo ènull, altrimenti il primo.