NVL NVL2 NULLIF e DECODE

Como fazer verificações simples numa query SQL?

Um dos tópicos do plano de estudos OCA é sobre funções de comparação simples. Estas estão numa limitada lista de: NVL, NVL2, NULLIF e DECODE. ( existem outras funções cobradas no teste, porém neste tópico são apenas estas )

Vamos a uma breve explicação de cada função:

SELECT TABLE_NAME, NVL( TABLESPACE_NAME , 'VAZIO' ) FROM USER_TABLES

nesta função o Oracle compara o valor da célula TABLESPACE_NAME com nulo e caso este realmente seja vazio o valor retornado será VAZIO. ( VAZIO porque eu defini, pode ser qquer outra coisa, inclusive datas )

SELECT TABLE_NAME, NVL2( TABLESPACE_NAME ,'EXISTE','É VAZIO' ) FROM USER_TABLES

nesta função o Oracle compara o valor da célula TABLESPACE_NAME com nulo e caso este realmente seja vazio o valor retornado é o definido pelo terceiro argumento e caso o valor exista o segundo argumento será retornado.

SELECT TABLE_NAME, NULLIF( TABLESPACE_NAME , 'USERS' ) FROM USER_TABLES

aqui o oracle retornará null se o valor da coluna for igual ao segundo argumento.

SELECT DECODE( TABLESPACE_NAME , 'USERS' , 1 , 2) FROM USER_TABLES

Já no decode, o oracle compara o valor da coluna com o segundo parametro e caso os valores sejam iguais o terceiro parâmetro será retornado, do contrário o quarto será retornado.

O decode pode ser usado para diversos fins, inclusive em substituição ao CASE em alguns casos.

Deixe uma resposta