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.