2010-08-19 19 views

Respuesta

107

coalesce se apoya tanto en Oracle y SQL Server y sirve 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 primer no nulo. El tipo de retorno para isnull coincide con el tipo del primer argumento, que no es verdadero para coalesce, al menos en SQL Server .)

+9

+1: 'COALESCE' es ANSI, compatible con Postgres, MySQL ... La única advertencia es que no necesariamente funciona tan rápido como la sintaxis nativa. –

+17

+1 para 'COALESCE', que tiene un beneficio importante sobre' NVL': realiza una evaluación de acceso directo, mientras que 'NVL' siempre evalúa ambos parámetros. Compare 'COALESCE (1, my_expensive_function)' con 'NVL (1, my_expensive_function)'. –

88

En lugar de ISNULL(), use NVL().

T-SQL:

SELECT ISNULL(SomeNullableField, 'If null, this value') FROM SomeTable 

PL/SQL:

SELECT NVL(SomeNullableField, 'If null, this value') FROM SomeTable 
+2

responde a la pregunta de forma explícita. –

20

también utilizar como NVL2 a continuación si desea volver otro valor de la field_to_check:

NVL2(field_to_check, value_if_NOT_null, value_if_null) 

uso: ORACLE/PLSQL: NVL2 FUNCTION

Cuestiones relacionadas