Respuestas:
coalesce
es compatible con Oracle y SQL Server y tiene esencialmente la misma función que nvl
y isnull
. (Hay algunas diferencias importantes, coalesce
puede tomar un número arbitrario de argumentos y devuelve el primero que no es nulo. El tipo de retorno para isnull
coincide con el tipo del primer argumento, que no es cierto para coalesce
, al menos en SQL Server).
COALESCE
, que tiene una ventaja importante NVL
: realiza una evaluación de atajos, mientras que NVL
siempre evalúa ambos parámetros. Comparar COALESCE(1,my_expensive_function)
con NVL(1,my_expensive_function)
.
COALESE()
función es excelente y puede leer sobre ella en MSDOC> COALESCE ; esta misma sintaxis funciona en Oracle. Si los datos tienen cadenas vacías en lugar de NULLS es posible que tenga algo como esto: COALESCE(TRIM(Tbl.myField1), TRIM(Tbl.myField2)) AS "myNewField"
.
En lugar de ISNULL()
, utilice NVL()
.
T-SQL:
SELECT ISNULL(SomeNullableField, 'If null, this value') FROM SomeTable
PL / SQL:
SELECT NVL(SomeNullableField, 'If null, this value') FROM SomeTable
También use NVL2
como se muestra a continuación si desea devolver otro valor de field_to_check
:
NVL2( field_to_check, value_if_NOT_null, value_if_null )
Puedes usar la condición if x is not null then...
. No es una función. También está la NVL()
función, un buen ejemplo de uso aquí: NVL function ref .
COALESCE
es ANSI, compatible con Postgres, MySQL ... La única advertencia es que no necesariamente funciona tan rápido como la sintaxis nativa.