O uso de isnull, ifnull, nullif é o seguinte:
Uso de isnull(expr):Se expr for nulo, então isnull() retorna um valor de 1, caso contrário, retorna 0. mysql> select isnull(1+1); -> 0 mysql> select isnull(1/0); -> 1 Usar = para comparações de valor nulo geralmente está errado.
A função isnull() compartilha algumas das mesmas características do operador de comparação is nulo. Veja a nota sobre é nulo.
Uso do IFNULL(expr1,expr2):
Se expr1 não for NULL, o valor de retorno de IFNULL() é expr1; Caso contrário, retorna um valor de expr2. IFNULL() retorna um número ou uma cadeia, dependendo do contexto em que é usada.
mysql> SELECT IFNULL(1,0); -> 1 mysql> SELECIONE IFNULL(NULL,10); -> 10 mysql> SELECT IFNULL(1/0,10); -> 10 mysql> SELECT IFNULL(1/0, 'sim');
-> 'sim'
O valor padrão de resultado para IFNULL(expr1,expr2) é o mais "genérico" das duas expressões, na ordem de STRING, REAL ou INTEIRO。 Suponha uma situação em que uma tabela baseada em expressões, ou MySQL, deve armazenar o valor de retorno de IFNULL() em uma tabela temporária na memória interna: CREATE TABLE tmp SELECT IFNULL(1,'test') AS test; Neste exemplo, a coluna de teste é do tipo CHAR(4).
Uso de NULLIF(expr1,expr2): Se expr1 = expr2 é verdadeiro, então o valor de retorno é NULL, caso contrário o valor de retorno é expr1. Isso é o mesmo que CASO QUANDO expr1 = expr2 ENTÃO NULL ELSE expr1 END é o mesmo. mysql> SELECT NULLIF(1,1);
-> NULL mysql> SELECT NULLIF(1,2); -> 1 Se os parâmetros não forem iguais, então o MySQL recebe o valor expr1 duas vezes.
|