Risposte:
coalesce
è supportato sia in Oracle che in SQL Server e svolge essenzialmente la stessa funzione di nvl
e isnull
. (Esistono alcune differenze importanti, coalesce
può accettare un numero arbitrario di argomenti e restituisce il primo non nullo. Il tipo restituito per isnull
corrisponde al tipo del primo argomento, che non è vero per coalesce
, almeno su SQL Server.)
COALESCE
, che ha un vantaggio importante NVL
: esegue la valutazione delle scorciatoie, mentre NVL
valuta sempre entrambi i parametri. Confronta COALESCE(1,my_expensive_function)
con NVL(1,my_expensive_function)
.
COALESE()
funzione è eccezionale e puoi leggerla su MSDOC> COALESCE : la stessa sintassi funziona su Oracle. Se i dati non ha stringhe vuote invece di NULLS potrebbe essere necessario qualcosa di simile a questo: COALESCE(TRIM(Tbl.myField1), TRIM(Tbl.myField2)) AS "myNewField"
.
Invece di ISNULL()
, usa NVL()
.
T-SQL:
SELECT ISNULL(SomeNullableField, 'If null, this value') FROM SomeTable
PL / SQL:
SELECT NVL(SomeNullableField, 'If null, this value') FROM SomeTable
Utilizzare anche NVL2
come di seguito se si desidera restituire un altro valore da field_to_check
:
NVL2( field_to_check, value_if_NOT_null, value_if_null )
Utilizzo: ORACLE / PLSQL: NVL2 FUNCTION
Puoi usare la condizione if x is not null then...
. Non è una funzione. C'è anche la NVL()
funzione, un buon esempio di utilizzo qui: NVL function ref .
COALESCE
è ANSI, supportato da Postgres, MySQL ... L'unico avvertimento è che non è necessariamente veloce come la sintassi nativa.