Todos os produtos
Search
Central de documentação

MaxCompute:DECODE

Última atualização: Sep 22, 2026

A função DECODE tem dois usos, dependendo dos parâmetros fornecidos. Você pode usá-la como uma ramificação condicional IF-THEN-ELSE ou para decodificar uma string de um formato de codificação especificado. Este tópico descreve a sintaxe e fornece exemplos para ambos os usos.

Selecione a ramificação IF-THEN-ELSE

Sintaxe

DECODE(<expression>, <search>, <result>[, <search>, <result>]...[, <default>])

Parâmetros

Parâmetro

Obrigatório

Descrição

expression

Sim

A expressão a ser comparada.

search

Sim

O item de pesquisa a ser comparado com expression.

result

Sim

O valor a ser retornado se search e expression coincidirem.

default

Não

Se nenhum item de pesquisa coincidir, a função retornará o valor padrão. Se você não especificar default, a função retornará NULL.

Nota
  • Todos os valores de result devem ter o mesmo tipo de dado ou ser NULL. A função retornará um erro se os tipos de dados forem inconsistentes.

  • A expression e todos os valores de search devem ter o mesmo tipo de dado. Caso contrário, a função retornará um erro.

Valor de retorno

  • Se houver correspondência, a função retornará o result correspondente.

  • Se não houver correspondência, a função retornará o valor default.

  • Se você não especificar default, a função retornará NULL.

  • Se um valor correspondente aparecer em várias opções de search, a função retornará o resultado da primeira ocorrência.

  • O MaxCompute SQL normalmente retorna NULL ao avaliar NULL=NULL. No entanto, a função DECODE trata NULL como igual a NULL.

Exemplo

Uma tabela chamada sale_detail contém os campos shop_name string, customer_id string e total_price double. A tabela inclui os seguintes dados:

+------------+-------------+-------------+------------+------------+
| shop_name  | customer_id | total_price | sale_date  | region     |
+------------+-------------+-------------+------------+------------+
| s1         | c1          | 100.1       | 2013       | china      |
| s2         | c2          | 100.2       | 2013       | china      |
| s3         | c3          | 100.3       | 2013       | china      |
| null       | c5          | NULL        | 2014       | shanghai   |
| s6         | c6          | 100.4       | 2014       | shanghai   |
| s7         | c7          | 100.5       | 2014       | shanghai   |
+------------+-------------+-------------+------------+------------+

Veja o seguinte exemplo de comando:

-- If customer_id is 'c1', return 'Taobao'. If it is 'c2', return 'Alipay'. If it is 'c3', return 'Aliyun'. If it is NULL, return 'N/A'. Otherwise, return 'Others'.
SELECT DECODE(customer_id, 'c1', 'Taobao', 'c2', 'Alipay', 'c3', 'Aliyun', Null, 'N/A', 'Others') AS RESULT FROM sale_detail;

-- This is equivalent to the following statement.
IF customer_id = c1 THEN RESULT := 'Taobao';
ELSEIF customer_id = c2 THEN RESULT := 'Alipay';
ELSEIF customer_id = c3 THEN RESULT := 'Aliyun';  ...
ELSE RESULT := 'Others';
END IF;

A função retorna o seguinte resultado:

+------------+
| result     | 
+------------+
| Others     | 
| Others     | 
| Others     | 
| Taobao     | 
| Alipay     | 
| Aliyun     | 
+------------+

Decodificar uma string de um formato especificado

Sintaxe

STRING DECODE(BINARY <str>, STRING <charset>)

Parâmetros

Parâmetro

Obrigatório

Descrição

str

Sim

Tipo BINARY. A string a ser decodificada.

charset

Sim

Tipo STRING. O formato de codificação. Valores válidos: UTF-8, UTF-16, UTF-16LE, UTF-16BE, ISO-8859-1 e US-ASCII.

Nota

Os formatos de codificação ISO-8859-1 e US-ASCII suportam codificação e decodificação apenas para caracteres em inglês. A função não suporta caracteres em chinês.

Valor de retorno

Retorna um valor do tipo STRING. Se str ou charset for NULL, a função retornará NULL.

Exemplos

  • Exemplo 1: O comando a seguir codifica a string "Chinese sample" no formato UTF-8.

    -- Encode and decode
    SELECT DECODE(ENCODE("Chinese sample","UTF-8"), "UTF-8");

    A função retorna o seguinte resultado:

    +-----+
    | _c0 |
    +-----+
    | Chinese sample |
    +-----+
  • Exemplo 2: Um parâmetro de entrada é NULL. Execute o seguinte comando:

    SELECT DECODE(ENCODE("Chinese sample","UTF-8"), NULL);

    A função retorna o seguinte resultado:

    +-----+
    | _c0 |
    +-----+
    | NULL |
    +-----+

Funções relacionadas

A função DECODE é classificada como função diversa e como função de string. Para mais informações sobre outras funções diversas, consulte Other functions. Para mais informações sobre outras funções de string, consulte String functions.