CASE valor WHEN [valor comparado] THEN resultado
              [WHEN [valor comparado] THEN resultado ...] [ELSE
              resultado] END, CASE WHEN [condição]
              THEN result [WHEN [condição] THEN resultado ...] [ELSE
              resultado] END
            
              A primeira expressão retorna o
              resultado onde valor=valor
              comparado. A segunda expressão retorna o o
              resultado da primeira condição, a qual é verdadeira. Se
              não existe nenhum resultado correspondente, então o
              resultado depois do ELSE é retornado.
              Se não existe parte ELSE então é
              retornado NULL is returned:
            
mysql>SELECT CASE 1 WHEN 1 THEN "um"WHEN 2 THEN "dois" ELSE "mais" END; -> "one" mysql>SELECT CASE WHEN 1>0 THEN "verdadeiro" ELSE "falso" END;-> "true" mysql>SELECT CASE BINARY "B" WHEN "a" THEN 1 WHEN "b" THEN 2 END;-> NULL
              O tipo do valor de retorno (INTEGER,
              DOUBLE ou STRING) é
              do mesmo tipo do primeiro valor retornado (a expressão
              depois do primeiro THEN).
            
              IF(expr1,expr2,expr3)
            
              Se expr1 é VERDADEIRA (expr1
              <> 0 e expr1 <>
              NULL) então IF() retorna
              expr2, senão ela retorna
              expr3. IF() returna
              um valor numérico ou string, dependendo do contexto no
              qual é usado.
            
mysql>SELECT IF(1>2,2,3);-> 3 mysql>SELECT IF(1<2,'sim','não');-> 'sim' mysql>SELECT IF(STRCMP('teste','teste1'),'não','sim');-> 'não'
              Se expr2 ou expr3 é
              explicitamente NULL então o tipo
              resultante da função IF() é o tipo
              da coluna não NULL. (Este
              comportamento é novo na versão 4.0.3 do MySQL).
            
              expr1 é avaliada como um valor
              inteiro, o qual significa que se você está testando
              valores de ponto flutuante ou strings, você de fazê-lo
              usando um operando de comparação:
            
mysql>SELECT IF(0.1,1,0);-> 0 mysql>SELECT IF(0.1<>0,1,0);-> 1
              No primeiro caso acima, IF(0.1) retorna
              0 porque 0.1 é
              convertido para um valor inteiro, resultando um um teste
              IF(0). Isto pode não ser o que você
              esperava. No segundo caso, a comparação testa se o valor
              de ponto flutuante não é zero. O resultado da
              comparação converte o termo em um interiro.
            
              O tipo de retorno padrão de IF() (o
              que pode importar quando ele é armazenado em uma tabela
              temporária) é calculado na versão 3.23 do MySQL de
              seguinte forma:
            
| Expressão | Valor de retorno | 
| expr2 ou expr3 retorna string | string | 
| expr2 ou expr3 retorna um valor de ponto flutuante | ponto flutuante | 
| expr2 ou expr3 retorna um inteiro | inteiro | 
Se expr2 e expr3 são strings, então o resultado é caso-insensitivo se ambas strings são caso insensitivo. (A patir da versão 3.23.51)
              IFNULL(expr1,expr2)
            
              Se expr1 não é
              NULL, IFNULL()
              retorna expr1, senão retorna
              expr2. IFNULL()
              retorna um valor numérico ou string, dependendo do
              contexto no qual é usado:
mysql>SELECT IFNULL(1,0);-> 1 mysql>SELECT IFNULL(NULL,10);-> 10 mysql>SELECT IFNULL(1/0,10);-> 10 mysql>SELECT IFNULL(1/0,'yes');-> 'yes'
              Na versão 4.0.6 e acima o valor resultante padrão de
              IFNULL(expr1,expr2) é o mais geral das
              duas expressões, na seguinte ordem:
              STRING, REAL ou
              INTEGER. A diferença das versões
              anteriores é mais notável quando se cria uma tabela
              baseada em uma expressão ou o MySQL tem que armazenar
              internamente um valor de IFNULL() em
              uma tabela temporária.
            
CREATE TABLE foo SELECT IFNULL(1,"teste") as teste;
              Na versão 4.0.6 do MySQL o tipo da coluna 'teste' é
              CHAR(4) enquanto nas versões
              anteriores ela seria do tipo BIGINT.
            
              NULLIF(expr1,expr2)
            
              Se expr1 = expr2 for verdadeiro, é
              retornado NULL senão é retornado
              expr1. Isto é o mesmo que
              CASE WHEN x = y THEN NULL ELSE x END:
mysql>SELECT NULLIF(1,1);-> NULL mysql>SELECT NULLIF(1,2);-> 1
              Note que expr1 é avaliada duas vezes
              no MySQL se os argumentos não são iguais.
            
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

