Respostas:
coalesce
é compatível com Oracle e SQL Server e tem essencialmente a mesma função que nvl
e isnull
. (Existem algumas diferenças importantes, coalesce
pode receber um número arbitrário de argumentos e retorna o primeiro não nulo. O tipo de retorno para isnull
corresponde ao tipo do primeiro argumento, que não é verdadeiro para coalesce
, pelo menos no SQL Server.)
COALESCE
, que tem um benefício importante sobre NVL
: faz avaliação de atalho, enquanto NVL
sempre avalia ambos os parâmetros. Compare COALESCE(1,my_expensive_function)
com NVL(1,my_expensive_function)
.
COALESE()
função é ótima e você pode ler sobre ela em MSDOC> COALESCE - esta mesma sintaxe funciona no Oracle. Se os dados tem cadeias vazias em vez de NULLS você pode precisar de algo como isto: COALESCE(TRIM(Tbl.myField1), TRIM(Tbl.myField2)) AS "myNewField"
.
Em vez 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
Use também NVL2
como a seguir se desejar retornar outro valor de field_to_check
:
NVL2( field_to_check, value_if_NOT_null, value_if_null )
Você pode usar a condição if x is not null then...
. Não é uma função. Também tem a NVL()
função, um bom exemplo de uso aqui: função NVL ref .
COALESCE
é ANSI, suportado por Postgres, MySQL ... A única ressalva é que ele não necessariamente executa tão rápido quanto a sintaxe nativa.