In MS SQL-Server, non posso fare:Qual è l'equivalente di PostgreSQL per ISNULL()
SELECT ISNULL(Field,'Empty') from Table
Ma in PostgreSQL ricevo un errore di sintassi. Come si emula la funzionalità ISNULL()
?
In MS SQL-Server, non posso fare:Qual è l'equivalente di PostgreSQL per ISNULL()
SELECT ISNULL(Field,'Empty') from Table
Ma in PostgreSQL ricevo un errore di sintassi. Come si emula la funzionalità ISNULL()
?
SELECT CASE WHEN field IS NULL THEN 'Empty' ELSE field END AS field_alias
O più idiomatica:
SELECT coalesce(field, 'Empty') AS field_alias
+1 per 'coalizione'. (P.S. Puoi farlo anche in MS SQL Server.) –
Ci sono altri casi per usare IS NULL, quindi è bene sapere entrambi. –
Penso che valga la pena notare che è 'coalesce' che è in standard SQL, con' isnull' che è una funzione specifica per MS che essenzialmente è 'coalesce' con solo due parametri. – GSerg
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 che funzionerà.
È possibile creare versioni diverse con diversi tipi di parametri.
Per favore, nessuno lo fa. Usa invece coalesce() in modo che il tuo DBA non ti odia. – Jordan
Uso COALESCE()
invece:
SELECT COALESCE(Field,'Empty') from Table;
Funziona molto simile ISNULL
, anche se fornisce 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 vorrà un gran numero di argomenti. Non c'è un massimo documentato. Ho testato 100 argomenti e ci sono riuscito. Questo dovrebbe essere abbastanza per la stragrande maggioranza delle situazioni.
Come si emula la funzionalità ISNULL()?
SELECT (Field IS NULL) FROM ...
Questo emula la funzionalità esatta di isnull, non è sicuro del motivo per cui è downvoted – smackshow
@artur Non capisci come funziona nient'altro. – datashaman
La migliore risposta per la domanda, ovviamente. Questa espressione è l'equivalente completo di ISNULL(). COALESCE() è molto intelligente e interessante da sapere ma non può eseguire un ISNULL() mentre è chiuso. – Skrol29
Prova:
SELECT COALESCE(NULLIF(field, ''), another_field) FROM table_name
Questo è bello in quanto copre il caso in cui un campo di testo NON è nullo, ma anche 'vuoto'. – soulia
No, non è possibile farlo in MSSQL. Quel codice non verrà compilato. 'ISNULL' prende due argomenti e restituisce il secondo è il primo è' null', altrimenti il primo. – GSerg
@GSerg, hai ragione. risolto quello. –
Gserg e Byron sì, si può vedere qui Esempio dal mio PC SELEZIONA IsNull (a.FechaEntregada, '') come prova da dbo.Amonestacion un https://msdn.microsoft.com/en-us/ library/ms184325.aspx – Juan