Todos os produtos
Search
Central de documentação

AnalyticDB:Funções de fluxo de controle

Última atualização: Jun 27, 2026

As funções de fluxo de controle permitem avaliar condições diretamente em consultas SQL. O AnalyticDB for MySQL oferece suporte a quatro funções: CASE, IF, IFNULL e NULLIF.

Função

Descrição

CASE

Retorna um resultado com base na correspondência de condições. Suporta duas formas: simples (correspondência de valor) e pesquisada (expressão booleana).

IF

Retorna um valor se a condição for verdadeira e outro se for falsa ou NULL.

IFNULL

Retorna a primeira expressão caso não seja NULL; caso contrário, retorna a segunda.

NULLIF

Retorna NULL quando duas expressões são iguais; nos demais casos, retorna a primeira expressão.

Dados de exemplo

Os exemplos desta página usam uma tabela chamada conditiontest. Execute as instruções a seguir para crie a tabela e inserir dados de amostra:

CREATE TABLE conditiontest(a INT) DISTRIBUTED BY HASH(a);
INSERT INTO conditiontest VALUES (1),(2),(3);

CASE

A função CASE possui duas formas: simples e pesquisada.

CASE simples

CASE expression
    WHEN value THEN result
    [WHEN value THEN result ...]
    [ELSE result]
    END

Compara expression com cada value sequencialmente. Retorna o result da primeira ramificação WHEN correspondente. Se nenhum value corresponder, retorna o result definido na cláusula ELSE.

Exemplo:

SELECT a,
      CASE a
      WHEN 1 THEN 'one'
      WHEN 2 THEN 'two'
      ELSE 'three'
      END as caseresult
FROM conditiontest;

Saída:

+---+------------+
| a | caseresult |
+---+------------+
| 2 | two        |
| 1 | one        |
| 3 | three      |
+---+------------+

CASE pesquisado

CASE
    WHEN condition THEN result
    [WHEN condition THEN result...]
    [ELSE result]
    END

Avalia cada condition em ordem. Retorna o result da primeira condition avaliada como verdadeira. Se todas as condições forem falsas, retorna o result da cláusula ELSE.

Exemplo:

SELECT a,
      CASE
      WHEN a=1 THEN 'one1'
      WHEN a=2 THEN 'two2'
      ELSE 'three3'
      END as caseresult
FROM conditiontest;

Saída:

+---+------------+
| a | caseresult |
+---+------------+
| 1 | one1       |
| 3 | three3     |
| 2 | two2       |
+---+------------+

IF

Forma com dois argumentos

IF(condition, true_value)

Retorna true_value se condition for verdadeira. Retorna NULL se condition for falsa ou NULL.

Exemplo — condição verdadeira:

SELECT IF((2+3)>4,5);

Saída:

+-------+
| _col0 |
+-------+
|     5 |

Forma com três argumentos

IF(condition, true_value, false_value)

Retorna true_value se condition for verdadeira. Retorna false_value se condition for falsa ou NULL.

Exemplo — condição falsa:

SELECT IF((2+3)<5,5,6);

Saída:

+-------+
| _col0 |
+-------+
|     6 |

IFNULL

IFNULL(expr1, expr2)

Retorna expr1 se não for NULL. Retorna expr2 se expr1 for NULL.

Exemplo 1 — expr1 é NULL:

SELECT IFNULL(NULL,2);

Saída:

+-------+
| _col0 |
+-------+
|     2 |
+-------+

Exemplo 2 — expr1 não é NULL:

SELECT IFNULL(1,0);

Saída:

+-------+
| _col0 |
+-------+
|     1 |
+-------+

NULLIF

NULLIF(expr1, expr2)

Retorna NULL se expr1 for igual a expr2. Nos demais casos, retorna expr1.

Exemplo 1 — expressões diferentes:

SELECT NULLIF(2,1);

Saída:

+-------+
| _col0 |
+-------+
|     2 |
+-------+

Exemplo 2 — expressões iguais:

SELECT NULLIF(2,2);

Saída:

+-------+
| _col0 |
+-------+
| NULL  |
+-------+