Todos os produtos
Search
Central de documentação

MaxCompute:Visão geral das funções de string

Última atualização: Sep 18, 2026

O MaxCompute fornece funções de string para truncar, concatenar, converter, comparar e pesquisar dados de string em tabelas.

O SQL do MaxCompute oferece suporte às seguintes funções de string.

Função

Descrição

ASCII

Retorna o código ASCII do primeiro caractere em uma string.

CHAR_MATCHCOUNT

Calcula o número de caracteres da string A que aparecem na string B.

CHR

Converte um código ASCII em um caractere.

CONCAT

Concatena strings.

CONCAT_WS

Concatena todas as strings de entrada usando um delimitador especificado.

DECODE

Decodifica uma string usando um formato de codificação especificado.

ENCODE

Codifica uma string usando um formato de codificação especificado.

FIND_IN_SET

Encontra a posição de uma string especificada em uma string separada por vírgulas.

FORMAT_NUMBER

Converte um número em uma string em um formato especificado.

FROM_CHARSET

Converte dados binários em um formato de codificação especificado para uma string UTF-8.

FROM_JSON

Retorna dados do tipo ARRAY, MAP ou STRUCT com base em uma string JSON e um formato de saída fornecidos.

GET_JSON_OBJECT

Extrai uma string especificada de uma string JSON padrão usando um método específico.

INITCAP

Converte uma string para o formato de título, onde cada palavra começa com uma letra maiúscula seguida de letras minúsculas, separadas por espaços.

INSTR

Localiza a posição da string A na string B.

IS_ENCODING

Determina se uma string pode ser convertida do conjunto de caracteres A para o conjunto de caracteres B.

JSON_TUPLE

Extrai strings correspondentes a um conjunto de chaves de entrada de uma string JSON padrão.

KEYVALUE

Divide uma string em pares chave-valor, separa os pares e retorna o valor correspondente a uma chave especificada.

KEYVALUE_TUPLE

Divide uma string em vários pares chave-valor, separa os pares e retorna os valores correspondentes a várias chaves especificadas.

LENGTH

Calcula o comprimento de uma string.

LENGTHB

Calcula o comprimento em bytes de uma string.

LOCATE

Encontra a posição de uma substring especificada dentro de uma string.

LPAD

Preenche uma string à esquerda até um comprimento especificado.

LTRIM

Remove caracteres da extremidade esquerda de uma string.

MASK_HASH

Retorna um valor de hash calculado a partir de uma expressão de string.

MD5

Calcula o hash MD5 de uma string.

PARSE_URL

Analisa uma URL e retorna informações sobre uma parte especificada.

PARSE_URL_TUPLE

Analisa uma URL e retorna informações sobre várias partes.

REGEXP_COUNT

Conta substrings que correspondem a um padrão especificado a partir de uma posição específica.

REGEXP_EXTRACT

Divide uma string em grupos com base em um padrão especificado e retorna a string de um grupo específico.

REGEXP_EXTRACT_ALL

Encontra todas as substrings que correspondem a um padrão de expressão regular em uma string e as retorna como um array.

REGEXP_INSTR

Retorna a posição inicial ou final de uma substring que corresponde a um padrão especificado para uma ocorrência específica, a partir de uma posição determinada.

REGEXP_REPLACE

Substitui substrings que correspondem a um padrão especificado para uma ocorrência específica por outra string.

REGEXP_SUBSTR

Retorna uma substring que corresponde a um padrão especificado para uma ocorrência específica, a partir de uma posição determinada.

REPEAT

Retorna uma string repetida um número especificado de vezes.

REPLACE

Substitui substrings que correspondem a uma string especificada por outra string.

REVERSE

Retorna o inverso de uma string.

RPAD

Preenche uma string à direita até um comprimento especificado.

RTRIM

Remove caracteres da extremidade direita de uma string.

SOUNDEX

Converte uma string padrão em uma string SOUNDEX.

SPACE

Gera uma string de espaços.

SPLIT

Divide uma string usando um delimitador e retorna um array.

SPLIT_PART

Divide uma string usando um delimitador e retorna uma parte especificada.

SUBSTR

Retorna uma substring de uma string do tipo STRING a partir de uma posição especificada com um comprimento determinado.

SUBSTRING

Retorna uma substring de uma string do tipo STRING ou BINARY a partir de uma posição especificada com um comprimento determinado.

SUBSTRING_INDEX

Extrai uma substring antes ou depois de uma ocorrência especificada de um delimitador.

TO_CHAR

Converte um valor BOOLEAN, BIGINT, DECIMAL ou DOUBLE em sua representação STRING.

TO_JSON

Converte um tipo complexo especificado em uma string JSON.

TOLOWER

Converte letras maiúsculas em inglês em uma string para minúsculas.

TOUPPER

Converte letras minúsculas em inglês em uma string para maiúsculas.

TRANSLATE

Substitui todas as ocorrências da string A na string B pela string C.

TRIM

Remove caracteres de ambas as extremidades de uma string.

URL_DECODE

Converte uma string do formato application/x-www-form-urlencoded MIME para caracteres padrão.

URL_ENCODE

Codifica uma string no formato application/x-www-form-urlencoded MIME.

Notas de uso

O MaxCompute V2.0 fornece funções adicionais. Se as funções que você usa envolvem novos tipos de dados suportados na edição de tipos de dados do MaxCompute V2.0, você deve executar a instrução SET para ativar a edição de tipos de dados do MaxCompute V2.0. Os novos tipos de dados incluem TINYINT, SMALLINT, INT, FLOAT, VARCHAR, TIMESTAMP e BINARY.

  • Nível de sessão: Para usar a edição de tipos de dados do MaxCompute V2.0, adicione set odps.sql.type.system.odps2=true; antes da instrução SQL que deseja executar e envie-as e execute-as juntas.

  • Nível de projeto: O proprietário do projeto pode ativar a edição de tipos de dados do MaxCompute V2.0 para o projeto com base nos requisitos do projeto. A configuração entra em vigor após 10 a 15 minutos. Para ativar a edição de tipos de dados do MaxCompute V2.0 no nível do projeto, execute o seguinte comando:

    setproject odps.sql.type.system.odps2=true; 

    Para obter mais informações sobre setproject, consulte Project operations. Para obter mais informações sobre as precauções que você deve tomar ao ativar a edição de tipos de dados do MaxCompute V2.0 no nível do projeto, consulte Data type version guide.

Limitações

As seguintes funções aceitam apenas caracteres em inglês:

  • TRIM/RTRIM/LTRIM: O parâmetro trimChars aceita apenas caracteres em inglês.

  • REVERSE: Aceita apenas caracteres em inglês no modo Hive.

  • SOUNDEX: Converte apenas caracteres em inglês.

  • TOLOWER: Converte letras maiúsculas em inglês em uma string para minúsculas.

  • TOUPPER: Converte letras minúsculas em inglês em uma string para maiúsculas.

  • INITCAP: Converte a primeira letra em inglês de cada palavra para maiúscula e o restante para minúsculas.

ASCII

  • Sintaxe

    bigint ascii(string <str>)
  • Descrição

    Retorna o código ASCII do primeiro caractere na string str.

  • Parâmetros

    str: obrigatório. Tipo STRING. Se a entrada for do tipo BIGINT, DOUBLE, DECIMAL ou DATETIME, ela será convertida implicitamente para o tipo STRING antes do cálculo.

  • Valor de retorno

    Retorna um valor do tipo BIGINT. O valor de retorno segue estas regras:

    • Se str não for do tipo STRING, BIGINT, DOUBLE, DECIMAL ou DATETIME, a função retorna um erro.

    • Se str for NULL, retorna NULL.

  • Exemplos

    • Exemplo 1: Retornar o código ASCII do primeiro caractere na string abcde. Instrução de exemplo:

      -- Returns 97.
      select ascii('abcde'); 
    • Exemplo 2: O parâmetro de entrada é NULL. Instrução de exemplo:

      -- Returns NULL.
      select ascii(null);

CHAR_MATCHCOUNT

  • Sintaxe

    bigint char_matchcount(string <str1>, string <str2>)
  • Descrição

    Calcula quantos caracteres em str1 aparecem em str2.

  • Parâmetros

    str1 e str2: obrigatórios. Tipo STRING. Ambas as strings devem ser strings UTF-8 válidas. Se caracteres inválidos (não codificados em Unicode) forem encontrados durante a comparação, a função retorna um valor negativo.

  • Valor de retorno

    Retorna um valor do tipo BIGINT. Se str1 ou str2 for NULL, retorna NULL.

  • Exemplos

    • Exemplo 1: Calcular quantos caracteres da string aabc aparecem em abcde. Instrução de exemplo:

      -- Returns 4.
      select char_matchcount('aabc','abcde');
    • Exemplo 2: Um parâmetro de entrada é NULL. Instrução de exemplo:

      -- Returns NULL.
      select char_matchcount(null,'abcde');

CHR

  • Sintaxe

    string chr(bigint <ascii>)
  • Descrição

    Converte um código ASCII especificado em um caractere.

  • Parâmetros

    ascii: obrigatório. Valor ASCII do tipo BIGINT. Valores válidos: 0 a 127. Se a entrada for do tipo STRING, DOUBLE ou DECIMAL, ela será convertida implicitamente para o tipo BIGINT antes do cálculo.

  • Valor de retorno

    Retorna um valor do tipo STRING. O valor de retorno segue estas regras:

    • Se o valor ascii estiver fora do intervalo válido, a função retorna um erro.

    • Se ascii não for do tipo BIGINT, STRING, DOUBLE ou DECIMAL, a função retorna um erro.

    • Se ascii for NULL, retorna NULL.

  • Exemplos

    • Exemplo 1: Converter o código ASCII 100 em um caractere. Instrução de exemplo:

      -- Returns d.
      select chr(100);
    • Exemplo 2: O parâmetro de entrada é NULL. Instrução de exemplo:

      -- Returns NULL.
      select chr(null);
    • Exemplo 3: A entrada é um caractere do tipo STRING. Instrução de exemplo:

      --The input is implicitly converted to the BIGINT type for the operation, which returns 'd'.
      select chr('100');

CONCAT

  • Sintaxe

    array<T> concat(array<T> <a>, array<T> <b>[,...])
    string concat(string <str1>, string <str2>[,...])
  • Descrição

    • Arrays como entradas: Concatena todos os elementos de vários arrays e retorna um novo array.

    • Strings como entradas: Concatena várias strings e retorna uma nova string.

  • Parâmetros

    • a e b: obrigatórios. Esses parâmetros especificam arrays. T em array<T> especifica o tipo de dados dos elementos nos arrays. Os elementos podem ser de qualquer tipo de dados. Os elementos no Array a e os elementos no Array b devem ser do mesmo tipo de dados. Os elementos nulos também participam da operação.

    • str1 e str2: obrigatórios. Valores do tipo STRING. Se os valores de entrada forem do tipo BIGINT, DOUBLE, DECIMAL ou DATETIME, eles serão convertidos implicitamente em valores do tipo STRING antes do cálculo. Se os valores de entrada forem de outros tipos de dados, a função retorna um erro.

  • Valor de retorno

    • Retorna um valor do tipo ARRAY. Se um dos arrays de entrada for nulo, retorna nulo.

    • Retorna um valor do tipo STRING. Se nenhum parâmetro de entrada for configurado ou se um parâmetro de entrada for definido como nulo, retorna nulo.

  • Exemplos

    • Exemplo 1: Concatenar todos os elementos de array(10, 20) e array(20, -20). Instrução de exemplo:

      -- The return value is [10, 20, 20, -20]. 
      select concat(array(10, 20), array(20, -20));
    • Exemplo 2: Um dos arrays de entrada contém um elemento nulo. Instrução de exemplo:

      -- The return value is [10, null, 20, -20]. 
      select concat(array(10, null), array(20, -20));
    • Exemplo 3: Um dos arrays de entrada é nulo. Instrução de exemplo:

      -- The return value is null. 
      select concat(array(10, 20), null);
    • Exemplo 4: Concatenar as strings aabc e abcde. Instrução de exemplo:

      -- The return value is aabcabcde. 
      select concat('aabc','abcde');
    • Exemplo 5: A entrada está vazia. Instrução de exemplo:

      -- The return value is null. 
      select concat();
    • Exemplo 6: Uma das strings de entrada é nula. Instrução de exemplo:

      -- The return value is null. 
      select concat('aabc', 'abcde', null);

CONCAT_WS

  • Sintaxe

    string concat_ws(string <separator>, string <str1>, string <str2>[,...])
    string concat_ws(string <separator>, array<string> <a>)
  • Descrição

    Retorna uma string formada pela concatenação de todas as strings de entrada ou elementos de array usando o delimitador especificado. Esta função é uma extensão no MaxCompute V2.0.

  • Parâmetros

    • separator: obrigatório. Delimitador do tipo STRING.

    • str1 e str2: Pelo menos duas strings devem ser especificadas. Tipo STRING. Se a entrada for do tipo BIGINT, DECIMAL, DOUBLE ou DATETIME, ela será convertida implicitamente para o tipo STRING antes do cálculo.

    • a: obrigatório. Tipo ARRAY. Os elementos do array devem ser do tipo STRING.

  • Valor de retorno

    Retorna um valor do tipo STRING ou STRUCT. O valor de retorno segue estas regras:

    • Se str1 ou str2 não for do tipo STRING, BIGINT, DECIMAL, DOUBLE ou DATETIME, a função retorna um erro.

    • Se nenhum parâmetro de entrada for fornecido ou se qualquer parâmetro de entrada for NULL, retorna NULL.

  • Exemplos

    • Exemplo 1: Concatenar as strings name e hanmeimei usando :. Instrução de exemplo:

      -- Returns name:hanmeimei.
      select concat_ws(':','name','hanmeimei');

      -

    • Exemplo 2: Um parâmetro de entrada é NULL. Instrução de exemplo:

      -- Returns NULL.
      select concat_ws(':','avg',null,'34');
    • Exemplo 3: Concatenar elementos no array array('name', 'hanmeimei') usando :. Instrução de exemplo:

      -- Returns name:hanmeimei.
      select concat_ws(':',array('name', 'hanmeimei'));

DECODE

  • Sintaxe

    STRING DECODE(BINARY <str>, STRING <charset>)
  • Descrição

    Decodifica str usando o formato especificado por charset.

  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    str

    Sim

    Tipo BINARY. A string a ser decodificada.

    charset

    Sim

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

    Nota

    Os formatos de codificação ISO-8859-1 e US-ASCII atualmente aceitam apenas caracteres em inglês, não em chinês.

  • Valor de retorno

    Retorna STRING. Se str ou charset for NULL, retorna NULL.

  • Exemplos

    • Exemplo 1: Codificar e decodificar a string English Sample com base no formato UTF-8. Instrução de exemplo:

      -- Encode and decode the string.SELECT DECODE(ENCODE("English Sample","UTF-8"), "UTF-8");

      Retorno:

      +-----+| _c0 |+-----+| English Sample |+-----+
    • Exemplo 2: Definir qualquer um dos parâmetros de entrada como NULL. Instrução de exemplo:

      SELECT DECODE(ENCODE("English Sample","UTF-8"), NULL);

      Retorno:

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

ENCODE

  • Sintaxe

    binary encode(string <str>, string <charset>)
  • Descrição

    Codifica str usando o formato especificado por charset.

  • Parâmetros

    • str: obrigatório. Tipo STRING. A string a ser recodificada.

    • charset: obrigatório. Tipo STRING. Formato de codificação. Valores válidos: UTF-8, UTF-16, UTF-16LE, UTF-16BE, ISO-8859-1, US-ASCII.

  • Valor de retorno

    Retorna um tipo BINARY. Se str ou charset for NULL, retorna NULL.

  • Exemplos

    • Exemplo 1: Codificar a string abc no formato UTF-8. Instrução de exemplo:

      -- Returns abc.
      select encode("abc", "UTF-8");
    • Exemplo 2: Codificar a string abc no formato UTF-16BE. Instrução de exemplo:

      -- Returns =00a=00b=00c.
      select encode("abc", "UTF-16BE");
    • Exemplo 3: Um parâmetro de entrada é NULL. Instrução de exemplo:

      -- Returns NULL.
      select encode("abc", null);

FIND_IN_SET

  • Sintaxe

    BIGINT FIND_IN_SET(STRING <str1>, STRING <str2>[, STRING <delimiter>])
  • Descrição

    Encontra a posição da string str1 na string str2 separada por delimiter, contando a partir de 1.

  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    str1

    Sim

    Tipo STRING. A string a ser pesquisada.

    str2

    Sim

    Tipo STRING. A string separada por delimiter.

    delimiter

    Não

    Constante STRING. O padrão é a vírgula (,). O delimitador pode ser um único caractere ou uma string.

  • Valor de retorno

    Retorna um tipo BIGINT. O valor de retorno segue estas regras:

    • Se str2 não contiver str1 ou str1 contiver delimiter, retorna 0.

    • Se str1 ou str2 for NULL, retorna NULL.

  • Exemplos

    • Exemplo 1: Encontrar a posição da string ab na string abc,hello,ab,c, que é separada por vírgulas (,). Instrução de exemplo:

      SELECT FIND_IN_SET('ab', 'abc,hello,ab,c') AS pos;

      Retorno:

      +------------+
      | pos        |
      +------------+
      | 3          |
      +------------+
    • Exemplo 2: Encontrar a posição da string hi na string abc,hello,ab,c separada por vírgulas (,). Instrução de exemplo:

      SELECT FIND_IN_SET('hi', 'abc,hello,ab,c') AS pos;

      Retorno:

      +------------+
      | pos        |
      +------------+
      | 0          |
      +------------+
    • Exemplo 3: Encontrar a posição da string ab na string abc_hello_ab_c delimitada por sublinhado (_). Instrução de exemplo:

      SELECT FIND_IN_SET('ab', 'abc_hello_ab_c', '_') AS pos;

      Retorno:

      +------------+
      | pos        |
      +------------+
      | 3          |
      +------------+
    • Exemplo 4: O parâmetro de entrada str1 ou str2 é NULL. Instrução de exemplo:

      SELECT FIND_IN_SET(null, 'abc,hello,ab,c') AS pos;

      Retorno:

      +------------+
      | pos        |
      +------------+
      | NULL       |
      +------------+

FORMAT_NUMBER

  • Sintaxe

    STRING FORMAT_NUMBER(DOUBLE|BIGINT|INT|SMALLINT|TINYINT|FLOAT|DECIMAL|STRING <expr1>, INT <expr2>)
  • Descrição

    Converte expr1 em uma string formatada de acordo com expr2.

  • Parâmetros

  • expr1: obrigatório. Um valor do tipo FLOAT, DOUBLE ou DECIMAL. Este parâmetro especifica a expressão que você deseja formatar.

  • expr2: obrigatório. Um valor do tipo INT. Valores válidos: 0 a 340. Este parâmetro especifica o número de casas decimais que você deseja reter. Este parâmetro também pode ser expresso em um formato semelhante a #,###,###.##. O número de casas decimais retornadas varia com base no valor deste parâmetro.

  • Valor de retorno

    Retorna um valor do tipo STRING. O valor de retorno varia com base nas seguintes regras:

    • Se o valor de expr2 for maior que 0 e menor ou igual a 340, retorna um valor arredondado para o número especificado de casas decimais.

    • Se o valor de expr2 for 0, o valor de retorno conterá apenas a parte inteira e não conterá o ponto decimal ou a parte decimal.

    • Se o valor de expr2 for menor que 0 ou greater than 340, a função retorna um erro.

    • Se expr1 ou expr2 estiver vazio ou definido como nulo, retorna nulo.

  • Exemplos

    • Exemplo 1: Formatar um número conforme especificado. Instruções de exemplo:

      -- Returns 5.230.
      SELECT FORMAT_NUMBER(5.230134523424545456,3);
      -- Returns 12,332.123.
      SELECT FORMAT_NUMBER(12332.123456, '#,###,###,###.###');
    • Exemplo 2: Um parâmetro de entrada está vazio ou é NULL. Instruções de exemplo:

      -- Returns NULL.
      SELECT FORMAT_NUMBER('',3);
      -- Returns NULL.
      SELECT FORMAT_NUMBER(null,3);

FROM_CHARSET

  • Sintaxe

    STRING FROM_CHARSET(binary <source>, string <source_charset>, [string <mode>])
  • Descrição

    A função FROM_CHARSET converte dados binários codificados em formatos diferentes de UTF-8 em uma string UTF-8 para cálculos subsequentes.

  • Parâmetros

    • source: obrigatório. Um valor do tipo BINARY. Este parâmetro especifica os dados binários a serem convertidos.

    • source_charset: obrigatório. Um valor do tipo STRING. Este parâmetro especifica o formato de codificação original dos dados binários especificados por source. Valores válidos: UTF-8, UTF-16, UTF-16LE, UTF-16BE, ISO-8859-1, US-ASCII, GB2312, GBK e GB18030.

    • mode: opcional. Um valor do tipo STRING. Este parâmetro especifica o modo de processamento caso um caractere não possa ser convertido quando a função FROM_CHARSET converte os dados binários especificados por source em uma string no formato de codificação definido. Valores válidos:

      • NONE: relata um erro. Não executa nenhum processamento. Este é o valor padrão.

      • TRANSLIT: substitui o caractere por um caractere semelhante no formato de codificação especificado.

      • IGNORE: ignora o erro e continua a execução do comando.

  • Valor de retorno

    Retorna um valor do tipo STRING codificado em UTF-8. Quando os parâmetros são NULL ou strings vazias, o valor de retorno segue estas regras:

    • Se qualquer parâmetro de entrada for NULL, retorna NULL.

    • Se qualquer parâmetro de entrada for uma string vazia, retorna um erro.

  • Exemplos

    • Exemplo 1: Converte dados binários codificados em UTF-8 em uma string codificada em UTF-8.

      SELECT FROM_CHARSET(unhex('e58aa0e6b2b9e9949fe696a4e68bb70a'),'UTF-8', 'TRANSLIT');
    • Exemplo 2: Converte dados binários codificados em GBK em uma string codificada em UTF-8.

      SELECT FROM_CHARSET(unhex('b9feb9febac3a4ce'), 'GBK');
    • Exemplo 3: Se um parâmetro de entrada for nulo, retorna null.

      SELECT FROM_CHARSET(unhex('b9feb9febac3a4ce'), null);

FROM_JSON

  • Sintaxe

    from_json(<jsonStr>, <schema>)
  • Descrição

    Retorna dados do tipo ARRAY, MAP ou STRUCT com base na string JSON jsonStr e no formato de saída schema.

  • Parâmetros

    • jsonStr: obrigatório. A string JSON inserida.

    • schema: obrigatório. O schema da string JSON. O valor deste parâmetro deve estar no mesmo formato da instrução para criação de uma tabela, como array<bigint>, map<string, array<string>> ou struct<a:int, b:double, .

      Nota

      As chaves em uma struct diferenciam maiúsculas de minúsculas. Você também pode especificar uma struct no formato a BIGINT, b DOUBLE, que é equivalente a STRUCT<a:BIGINT, b:DOUBLE>.

      A tabela a seguir descreve os mapeamentos entre os tipos de dados JSON e os tipos de dados do MaxCompute.

      Tipo de dados JSON

      Tipo de dados do MaxCompute

      OBJECT

      STRUCT, MAP e STRING

      ARRAY

      ARRAY e STRING

      NUMBER

      TINYINT, SMALLINT, INT, BIGINT, FLOAT, DOUBLE, DECIMAL e STRING

      BOOLEAN

      BOOLEAN e STRING

      STRING

      STRING, CHAR, VARCHAR, BINARY, DATE e DATETIME

      NULL

      Todos os tipos

      Nota

      As strings JSON dos tipos OBJECT e ARRAY são analisadas ao máximo. Se o tipo de dados da string JSON não estiver mapeado para nenhum tipo de dados do MaxCompute, a string JSON será omitida. Para facilitar o uso, todos os tipos de dados JSON podem ser convertidos no tipo de dados STRING suportado pelo MaxCompute. Ao converter uma string JSON do tipo NUMBER em um valor do tipo FLOAT, DOUBLE ou DECIMAL, a precisão do valor não pode ser garantida. Recomendamos converter a string JSON em um valor do tipo STRING e, em seguida, converter o valor obtido em um valor do tipo FLOAT, DOUBLE ou DECIMAL.

  • Valor de retorno

    Retorna um valor do tipo ARRAY, MAP ou STRUCT.

  • Exemplos

    • Exemplo 1: Converte uma string JSON específica em um valor de um tipo de dados específico. Instrução de exemplo:

      -- The return value is {"a":1,"b":0.8}. 
      select from_json('{"a":1, "b":0.8}', 'a int, b double');
      -- The return value is {"time":"26/08/2015"}. 
      select from_json('{"time":"26/08/2015"}', 'time string');
      -- The return value is {"a":1,"b":0.8}. 
      select from_json('{"a":1, "b":0.8}', 'a int, b double, c string');
      -- The return value is [1,2,3]. 
      select from_json('[1, 2, 3, "a"]', 'array<bigint>');
      -- The return value is {"d":"v","a":"1","b":"[1,2,3]","c":"{}"}. 
      select from_json('{"a":1,"b":[1,2,3],"c":{},"d":"v"}', 'map<string, string>');
    • Exemplo 2: Usa as funções map_keys e from_json para obter todas as chaves em uma string JSON. Você também pode usar JSON_KEYS para a mesma finalidade. Instrução de exemplo:

      -- The return value is ["a","b"]. 
      select map_keys(from_json('{"a":1,"b":2}','map<string,string>'));

GET_JSON_OBJECT

  • Sintaxe

    STRING GET_JSON_OBJECT(JSON|STRING <json>, STRING <json_path>)
    
    -- Example: Returns Alice.
    SELECT GET_JSON_OBJECT(JSON '{"name": "Alice", "age": 30}', '$.name');
  • Descrição

    A função GET_JSON_OBJECT extrai uma string de uma string JSON ou de um valor do tipo de dados JSON com base em um caminho JSON especificado, json_path.

  • Notas de uso

    • A função GET_JSON_OBJECT não suporta sintaxe de expressão regular em caminhos JSON.

    • A sintaxe de caminho JSON para o novo JSON data type difere da especificação original. Isso pode causar problemas de compatibilidade.

    • Se uma consulta contiver várias funções GET_JSON_OBJECT que processam os mesmos dados JSON, a função analisa a mesma string JSON repetidamente. Isso pode afetar negativamente o desempenho e aumentar os custos. Para evitar isso, use GET_JSON_OBJECT com uma função de valor de tabela definida pelo usuário (UDTF) para transformar dados de log JSON.

  • Parâmetros

    • json: obrigatório. Os dados JSON a serem processados. Este parâmetro suporta dois tipos de entrada: JSON e STRING.

      • Tipo JSON: Um valor do tipo de dados JSON. O valor deve estar no formato {"Key":"Value", "Key":"Value",...}, como JSON '{"name": "Alice", "age": 30}'.

      • Tipo STRING: Se a entrada for uma STRING, ela deve atender aos seguintes requisitos de formato:

        • A string deve estar no formato '{"Key":"Value", "Key":"Value",...}', como '{"name": "Alice", "age": 30}'.

        • Aspas duplas (") devem ser escapadas com duas barras invertidas (\\).

        • Aspas simples (') devem ser escapadas com uma barra invertida (\).

    • json_path: obrigatório. Uma STRING que especifica a expressão de caminho JSON usada para extrair dados. O caminho deve começar com o caractere $, como $.aliyun.test[0].demo. A expressão de caminho usa os seguintes caracteres:

      • $: Indica o nó raiz.

      • . ou ['']: Indica um nó filho. Usado para analisar objetos JSON, como $.store.book. Se uma chave JSON contiver um ponto (.), use [''] em seu lugar.

        A extração de dados com [''] só é suportada mediante a execução da instrução SET odps.sql.udf.getjsonobj.new=true;.

      • []: [number] indica um subscrito de array. O subscrito começa em 0.

      • *: Um caractere curinga para []. Retorna o array inteiro. O asterisco (*) não pode ser escapado.

  • Valor de retorno

    Retorna um valor do tipo STRING. Este valor corresponde aos dados extraídos do caminho especificado. A função segue estas regras para o seu valor de retorno:

    • Se json for válido e json_path existir, retorna a string correspondente.

    • Se json estiver vazio ou tiver um formato inválido, retorna NULL.

    • Se json_path contiver [*], o valor de retorno não estará no formato de array. Para forçar o valor de retorno a estar em um formato de array unificado, execute a instrução SET odps.sql.force.getjsonobj.array.format=true;.

    • Se json_path for inválido, retorna NULL.

    Comportamento de retorno

    • Controle o comportamento de retorno da função definindo o sinalizador no nível do projeto ou no nível da sessão com o seguinte comando: SET odps.sql.udf.getjsonobj.new=true/false;.

      Os dois comportamentos de retorno correspondentes às diferentes configurações de sinalizador são os seguintes:

      Importante

      Recomendamos usar a configuração SET odps.sql.udf.getjsonobj.new=true;. Essa configuração fornece um comportamento de função mais padrão, simplifica o processamento de dados e melhora o desempenho. Se o seu projeto MaxCompute tiver jobs existentes que dependem do comportamento de escape de caracteres reservados JSON, recomendamos continuar usando o comportamento original. Isso evita erros ou problemas de precisão que podem ocorrer caso você mude para o novo comportamento sem verificação.

      Configurações de parâmetros

      SET odps.sql.udf.getjsonobj.new=true;

      SET odps.sql.udf.getjsonobj.new=false;

      Comportamento de retorno

      Retorna a string original sem modificações.

      Retorna a string com caracteres reservados JSON escapados.

      O valor de retorno é uma string JSON que pode ser analisada diretamente. Não é necessário usar funções, como REPLACE ou REGEXP_REPLACE, para substituir barras invertidas.

      Caracteres reservados JSON, como quebras de linha (\n) e aspas ("), são retornados como as strings '\n' e '\"'.

      Análise de chaves duplicadas

      Um objeto JSON pode conter chaves duplicadas, que são analisadas com sucesso.

      -- Returns 1.
      SELECT GET_JSON_OBJECT('{"a":"1","a":"2"}', '$.a');

      Um objeto JSON não pode conter chaves duplicadas. Caso contenha, a análise pode falhar.

      -- Returns NULL.
          SELECT GET_JSON_OBJECT('{"a":"1","a":"2"}', '$.a');

      Ordem de classificação de saída

      A saída é classificada na mesma ordem da string JSON original.

      -- Returns {"b":"1","a":"2"}.
      SELECT GET_JSON_OBJECT('{"b":{"b":"1","a":"2"},"a":"2"}', '$.b');

      A saída é classificada em ordem alfabética.

      -- Returns {"a":"2","b":"1"}.
          SELECT GET_JSON_OBJECT('{"b":{"b":"1","a":"2"},"a":"2"}', '$.b');
    • Se o modo de compatibilidade com Hive estiver ativado através da execução do comando SET odps.sql.hive.compatible=true;, a função GET_JSON_OBJECT preserva as strings originais em seu valor de retorno.

    • Para projetos MaxCompute criados em ou após 21 de janeiro de 2021, o comportamento de retorno padrão da função GET_JSON_OBJECT é preservar as strings originais.

    • Para projetos MaxCompute criados antes de 21 de janeiro de 2021, o comportamento de retorno padrão da função GET_JSON_OBJECT é escapar caracteres reservados JSON.

    • Use o exemplo a seguir para determinar qual comportamento a função GET_JSON_OBJECT utiliza no seu projeto MaxCompute. Para isso, execute o seguinte comando:

      SELECT GET_JSON_OBJECT('{"a":"[\\"1\\"]"}', '$.a');
      --The return value if the behavior is to escape JSON reserved characters:
      [\"1\"]
      
      --The return value if the behavior is to preserve original strings:
      ["1"]
      Para alterar o comportamento de retorno padrão da função GET_JSON_OBJECT no seu projeto para a preservação de strings originais, abra um ticket. Isso evita a necessidade de definir a propriedade no nível da sessão para cada sessão.
  • Exemplos

    JSON input parameter

    Exemplo 1: Obter valores para chaves específicas de dados JSON

    -- Returns 1.
    SELECT GET_JSON_OBJECT(JSON '{"a":1, "b":2}', '$.a');
    
    -- Returns NULL.
    SELECT GET_JSON_OBJECT(JSON '{"a":1, "b":2}', '$.c');

    Exemplo 2: Um json_path inválido retorna NULL.

    -- Returns NULL.
    SELECT GET_JSON_OBJECT(JSON '{"a":1, "b":2}', '$invalid_json_path');

    STRING input parameter

    Exemplo 1: Extrair informações do objeto JSON src_json.json

    -- Prepare the test data.
    CREATE TABLE IF NOT EXISTS src_json (
        json STRING
    );
    
    INSERT OVERWRITE TABLE src_json
    VALUES
    ('{"store":
      {"fruit":[{"weight":8,"type":"apple"},
        {"weight":9,"type":"pear"}],
         "bicycle":{"price":19.95,
         "color":"red"}},
       "email":"amy@only_for_json_udf_test.net",
       "owner":"amy"}');
    
    -- Extract the information of the owner field. The return value is amy.
    SELECT GET_JSON_OBJECT(src_json.json, '$.owner') FROM src_json;
    
    -- Optional. Output by preserving the original string.
    SET odps.sql.udf.getjsonobj.new=true;
    -- Extract the information of the first array in the store.fruit field. The return value is {"weight":8,"type":"apple"}.
    SELECT GET_JSON_OBJECT(src_json.json, '$.store.fruit[0]') FROM src_json;
    
    -- Extract the information of a non-existent field. The return value is NULL.
    SELECT GET_JSON_OBJECT(src_json.json, '$.non_exist_key') FROM src_json;

    Exemplo 2: Extrair informações de dados de array JSON

    -- Returns 2222.
    SELECT GET_JSON_OBJECT('{"array":[["aaaa",1111],["bbbb",2222],["cccc",3333]]}','$.array[1][1]');
    
    -- Output by preserving the original string.
    SET odps.sql.udf.getjsonobj.new=true;
    -- Returns ["h0","h1","h2"].
    SELECT GET_JSON_OBJECT('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[*]');
    
    -- Output by escaping JSON reserved characters.
    SET odps.sql.udf.getjsonobj.new=false;
    -- Returns ["h0","h1","h2"].
    SELECT GET_JSON_OBJECT('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[*]');
    
    -- Returns h1.
    SELECT GET_JSON_OBJECT('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[1]');

    Exemplo 3: Extrair informações de dados JSON com um ponto (.) na chave

    -- Prepare the test data.
    CREATE TABLE json_test (id STRING, json STRING);
    
    -- Insert data where the key contains a period (.).
    INSERT INTO TABLE json_test (id, json) VALUES 
    ("1", 
      "{
        \"China.beijing\":
          {\"school\":
            {\"id\":0,\"book\":
              [{\"title\": \"A\",\"price\": 8.95},
               {\"title\": \"B\",\"price\": 10.2}]
            }
          }
      }"
    );
    
    -- Insert data where the key does not contain a period (.).
    INSERT INTO TABLE json_test (id, json) VALUES 
    ("2", 
      "{
        \"China_beijing\":
          {\"school\":
            {\"id\":0,\"book\":
              [{\"title\": \"A\",\"price\": 8.95},
               {\"title\": \"B\",\"price\": 10.2}]
            }
          }
      }"
    );
    
    -- Use square brackets [''] to parse data that contains a period (.).
    -- This extracts the 'id' value under 'China.beijing'. The return value is 0.
    SELECT GET_JSON_OBJECT(json, "$['China.beijing'].school['id']") FROM json_test WHERE id =1;
    
    -- For data without special characters, both '.' and [''] are valid and equivalent.
    -- This extracts the 'id' value under 'China_beijing'. The return value is 0.
    SELECT GET_JSON_OBJECT(json, "$['China_beijing'].school['id']") FROM json_test WHERE id =2;
    SELECT GET_JSON_OBJECT(json, "$.China_beijing.school['id']") FROM json_test WHERE id =2;

    Exemplo 4: Usar [''] para chaves que contêm um ponto (.)

    SET odps.sql.udf.getjsonobj.new=true;
    
    -- Returns 1.
    SELECT GET_JSON_OBJECT('{"a.1":"1","a":"2"}', '$[\'a.1\']');

    Exemplo 5: Entrada JSON vazia ou inválida

    -- Returns NULL.
    SELECT GET_JSON_OBJECT('','$.array[1][1]');
    
    -- Returns NULL.
    SELECT GET_JSON_OBJECT('"array":["aaaa",1111],"bbbb":["cccc",3333]','$.array[1][1]');

    Exemplo 6: Strings JSON escapadas

    SET odps.sql.udf.getjsonobj.new=true;
    
    --Returns "1".
    SELECT GET_JSON_OBJECT('{"a":"\\"1\\"","b":"2"}', '$.a'); 
    
    --Returns '1'.
    SELECT GET_JSON_OBJECT('{"a":"\'1\'","b":"2"}', '$.a');

    Exemplo 7: Suporte a emojis

    -- Returns the emoji symbol.
    SELECT GET_JSON_OBJECT('{"a":"<Emoji symbol>"}', '$.a');
    Nota: O DataWorks não suporta a inserção direta de caracteres de emoji. Use uma ferramenta, como o Data Integration, para gravar as strings codificadas que correspondem aos caracteres de emoji no MaxCompute. Em seguida, use a função GET_JSON_OBJECT para processá-los.

INITCAP

  • Sintaxe

    string initcap(<str>)
  • Descrição

    Converte str para o formato de título, onde as palavras são separadas por espaços, com a primeira letra de cada palavra em maiúscula e o restante em minúscula.

  • Parâmetros

    str: obrigatório. Tipo STRING. String de entrada.

  • Valor de retorno

    Retorna uma string com a primeira letra de cada palavra em maiúscula e o restante em minúscula.

  • Exemplo

    -- Returns Odps Sql.
    SELECT initcap("oDps sql");

INSTR

  • Sintaxe

    bigint instr(string <str1>, string <str2>[, bigint <start_position>[, bigint <nth_appearance>]])
  • Descrição

    Encontra a posição da substring str2 na string str1.

  • Parâmetros

    • str1: obrigatório. Tipo STRING. String de destino a ser pesquisada. Se a entrada for BIGINT, DOUBLE, DECIMAL ou DATETIME, é implicitamente convertida para STRING. Outros tipos retornam um erro.

    • str2: obrigatório. Tipo STRING. Substring a ser correspondida. Se a entrada for BIGINT, DOUBLE, DECIMAL ou DATETIME, é implicitamente convertida para STRING. Outros tipos retornam um erro.

    • start_position: opcional. Um valor do tipo BIGINT. Um erro é retornado para outros tipos de dados. Este parâmetro especifica a posição do caractere em str1 a partir do qual a pesquisa começa. A posição inicial padrão é o primeiro caractere, que é a posição 1. Se start_position for um valor negativo, a pesquisa começa a contar de trás para frente a partir do final da string, onde o último caractere está na posição -1, o penúltimo em -2, e assim por diante.

    • nth_appearance: opcional. Um valor do tipo BIGINT que deve ser maior que 0. Este parâmetro especifica a posição da n-ésima (nth_appearance) ocorrência de str2 em str1. Se nth_appearance for de outro tipo de dados ou for menor ou igual a 0, um erro será retornado.

  • Valor de retorno

    Retorna um valor do tipo BIGINT. O valor de retorno segue estas regras:

    • Se str1 não contiver str2, retorna 0.

    • Se str2 estiver vazia, a correspondência é sempre bem-sucedida. Exemplo: select instr('abc',''); retorna 1.

    • Se str1, str2, start_position ou nth_appearance for NULL, retorna NULL.

  • Exemplos

    • Exemplo 1: Encontrar a posição do caractere e na string Tech on the net. Instrução de exemplo:

      -- Returns 2.
      select instr('Tech on the net', 'e');
    • Exemplo 2: Encontrar a posição da substring on na string Tech on the net. Instrução de exemplo:

      -- Returns 6.
      select instr('Tech on the net', 'on');
    • Exemplo 3: Encontrar a posição da segunda ocorrência do caractere e na string Tech on the net a partir do terceiro caractere. Instrução de exemplo:

      -- Returns 14.
      select instr('Tech on the net', 'e', 3, 2);
    • Exemplo 4: Um parâmetro de entrada é NULL. Instrução de exemplo:

      -- Returns NULL.
      select instr('Tech on the net', null);

IS_ENCODING

  • Sintaxe

    boolean is_encoding(string <str>, string <from_encoding>, string <to_encoding>)
  • Descrição

    Determina se a string de entrada str pode ser convertida do conjunto de caracteres from_encoding para to_encoding. Também é usada para detectar texto corrompido — normalmente definindo from_encoding como UTF-8 e to_encoding como GBK.

  • Parâmetros

    • str: obrigatório. Tipo STRING. Strings vazias são consideradas válidas para qualquer conjunto de caracteres.

    • from_encoding, to_encoding: obrigatório. Tipo STRING. Conjuntos de caracteres de origem e de destino.

  • Valor de retorno

    Retorna um valor do tipo BOOLEAN. O valor de retorno segue estas regras:

    • Se str for convertida com sucesso, retorna True; caso contrário, False.

    • Se str, from_encoding ou to_encoding for NULL, retorna NULL.

JSON_TUPLE

  • Sintaxe

    string json_tuple(string <json>, string <key1>, string <key2>,...)
  • Descrição

    Extrai strings de uma string JSON padrão com base em um conjunto de chaves de entrada, como (key1,key2,...).

  • Parâmetros

    • json: obrigatório. Um valor do tipo STRING. Este parâmetro especifica uma string JSON padrão.

    • key: obrigatório. Um valor do tipo STRING. Este parâmetro é usado para descrever o path de um objeto JSON na string JSON. O valor não pode começar com um cifrão ($). Você pode inserir várias chaves de uma vez. O MaxCompute analisa objetos JSON usando . ou ['']. Se uma chave em um objeto JSON incluir um ponto (.), [''] pode ser usado.

  • Valor de retorno

    Retorna um valor do tipo STRING.

    Nota
    • Se json estiver vazio ou for inválido, retorna null.

    • Se key estiver vazia, for inválida ou não existir na string JSON, retorna null.

    • Se json for válido e key existir, retorna a string relacionada.

    • Esta função pode analisar dados JSON que contêm caracteres chineses.

    • Esta função pode analisar dados JSON aninhados.

    • Esta função pode analisar dados JSON que contêm arrays aninhados.

    • A ação de análise é equivalente à execução de GET_JSON_OBJECT junto com set odps.sql.udf.getjsonobj.new=true;. Para obter vários objetos de uma string JSON, é necessário chamar a função GET_JSON_OBJECT várias vezes. Como resultado, a string JSON é analisada múltiplas vezes. A função JSON_TUPLE permite inserir várias chaves de uma vez e a string JSON é analisada apenas uma vez. JSON_TUPLE é mais eficiente que GET_JSON_OBJECT.

    • JSON_TUPLE é uma função de valor de tabela definida pelo usuário (UDTF). Se você quiser selecionar algumas colunas de uma tabela, use JSON_TUPLE junto com a cláusula LATERAL VIEW.

KEYVALUE

  • Sintaxe

    keyvalue(string <str>,[string <split1>,string <split2>,] string <key>)
    keyvalue(string <str>,string <key>) 
  • Descrição

    Divide a string str em pares de chave-valor com o uso de split1, separa os pares por meio de split2 e retorna o valor correspondente à key.

  • Parâmetros

    • str: obrigatório. Tipo STRING. String a ser dividida.

    • split1, split2: opcional. Tipo STRING. Strings delimitadoras para a divisão. Se não forem especificadas, o valor padrão de split1 é ";" e o de split2 é ":". Caso uma substring dividida por split1 contenha múltiplos split2, o resultado será indefinido.

    • key: obrigatório. Tipo STRING. Após a divisão por split1 e split2, retorna o valor para key.

  • Valor de retorno

    Retorna o tipo STRING. O valor de retorno segue estas regras:

    • Se split1 ou split2 for NULL, retorna NULL.

    • Se str ou key for NULL, ou se não houver uma key correspondente, retorna NULL.

    • Se houver correspondência em múltiplos pares de chave-valor, retorna o valor da primeira key correspondente.

  • Exemplos

    • Exemplo 1: Divida a string 0:1/;1:2 em pares de chave-valor e retorne o valor da chave 1. Instrução de exemplo:

      -- Returns 2.
      select keyvalue('0:1/;1:2', 1);

      Os parâmetros split1 e split2 não foram especificados. O valor padrão de split1 é o ponto e vírgula (";") e o valor padrão de split2 é os dois pontos (":").

      Após a divisão por split1, os pares de chave-valor são 0:1/,1:2. Após a divisão por split2:

      0 1/  
      1 2

      Retorna o valor 2 para a chave 1.

    • Exemplo 2: Divida a string “\;decreaseStore:1\;xcard:1\;isB2C:1\;tf:21910\;cart:1\;shipping:2\;pf:0\;market:shoes\;instPayAmount:0\;” usando “\;” como split1 e ":" como split2 e, em seguida, retorne o valor para a chave tf. Instrução de exemplo:

      -- Returns 21910.
      select keyvalue("\;decreaseStore:1\;xcard:1\;isB2C:1\;tf:21910\;cart:1\;shipping:2\;pf:0\;market:shoes\;instPayAmount:0\;","\;",":","tf");

      A divisão da string "\;decreaseStore:1\;xcard:1\;isB2C:1\;tf:21910\;cart:1\;shipping:2\;pf:0\;market:shoes\;instPayAmount:0\;" com o delimitador "\;" gera os seguintes pares de chave-valor.

      decreaseStore:1,xcard:1,isB2C:1,tf:21910,cart:1,shipping:2,pf:0,market:shoes,instPayAmount:0 

      O resultado da divisão por ":" é o seguinte.

      decreaseStore 1  
      xcard 1  
      isB2C 1  
      tf 21910  
      cart 1  
      shipping 2  
      pf 0  
      market shoes  
      instPayAmount 0

      Retorna o valor 21910 para a chave tf.

KEYVALUE_TUPLE

  • Sintaxe

    KEYVALUE_TUPLE(str, split1, split2, key1, key2, ..., keyN)
  • Descrição

    Divide a string str em pares de chave-valor usando split1, separa os pares usando split2 e retorna valores para múltiplas ocorrências de key.

  • Parâmetros

    • str: obrigatório. Tipo STRING. String a ser dividida.

    • split1, split2: obrigatório. Tipo STRING. Strings delimitadoras para a divisão. Caso uma substring dividida por split1 contenha múltiplos split2, o resultado será indefinido.

    • key: obrigatório. Tipo STRING. Após a divisão por split1 e split2, retorna o valor para key.

  • Valor de retorno

    Retorna o tipo STRING. O valor de retorno segue estas regras:

    • Se split1 ou split2 for NULL, retorna NULL.

    • Se str ou key for NULL, ou se não houver uma key correspondente, retorna NULL.

  • Exemplo

    -- Create table
    create table mf_user (
    user_id string,
    user_info string
    );
    -- Insert data
    insert into mf_user values('1','age:18;genda:f;address:abc'),('2','age:20;genda:m;address:bcd');
    -- Query
    SELECT user_id,
    KEYVALUE(user_info,';',':','age') as age,
    KEYVALUE(user_info,';',':','genda') as genda,
    KEYVALUE(user_info,';',':','address') as address
    FROM mf_user;
    -- Equivalent to KEYVALUE query
    SELECT user_id,
    age,
    genda,
    address
    FROM mf_user LATERAL VIEW KEYVALUE_TUPLE(user_info,';', ':','age','genda','address') ui AS age,genda,address;

    O resultado é o seguinte.

    +------------+------------+------------+------------+
    | user_id    | age        | genda      | address    |
    +------------+------------+------------+------------+
    | 1          | 18         | f          | abc        |
    | 2          | 20         | m          | bcd        |
    +------------+------------+------------+------------+

LENGTH

  • Sintaxe

    bigint length(string <str>)
  • Descrição

    Calcula o comprimento da string str.

  • Parâmetros

    str: obrigatório. Tipo STRING. Se a entrada for BIGINT, DOUBLE, DECIMAL ou DATETIME, será convertida implicitamente para STRING.

  • Valor de retorno

    Retorna o tipo BIGINT. O valor de retorno segue estas regras:

    • Se str não for STRING, BIGINT, DOUBLE, DECIMAL ou DATETIME, retorna um erro.

    • Se str for NULL, retorna NULL.

    • Se str não estiver codificada em UTF-8, retorna -1.

  • Exemplos

    • Exemplo 1: Calcule o comprimento da string Tech on the net. Instrução de exemplo:

      -- Returns 15.
      select length('Tech on the net');
    • Exemplo 2: O parâmetro de entrada é NULL. Instrução de exemplo:

      -- Returns NULL.
      select length(null);

LENGTHB

  • Sintaxe

    bigint lengthb(string <str>)
  • Descrição

    Calcula o comprimento em bytes da string str.

  • Parâmetros

    str: obrigatório. Tipo STRING. Se a entrada for BIGINT, DOUBLE, DECIMAL ou DATETIME, será convertida implicitamente para STRING.

  • Valor de retorno

    Retorna o tipo BIGINT. O valor de retorno segue estas regras:

    • Se str não for STRING, BIGINT, DOUBLE, DECIMAL ou DATETIME, retorna um erro.

    • Se str for NULL, retorna NULL.

  • Exemplos

    • Exemplo 1: Calcule o comprimento em bytes da string Tech on the net. Instrução de exemplo:

      -- Returns 15.
      select lengthb('Tech on the net');
    • Exemplo 2: O parâmetro de entrada é NULL. Instrução de exemplo:

      -- Returns NULL.
      select lengthb(null);

LOCATE

  • Sintaxe

    bigint locate(string <substr>, string <str>[, bigint <start_pos>]) 
  • Descrição

    Localiza a posição da substring substr na string str. Especifique a posição inicial (a contagem começa em 1) com start_pos.

  • Parâmetros

    • substr: obrigatório. Tipo STRING. Substring a ser localizada.

    • str: obrigatório. Tipo STRING. String a ser pesquisada.

    • start_pos: opcional. Tipo BIGINT. Posição inicial para a pesquisa.

  • Valor de retorno

    Retorna o tipo BIGINT. O valor de retorno segue estas regras:

    • Se str não contiver substr, retorna 0.

    • Se str ou substr for NULL, retorna NULL.

    • Se start_pos for NULL, retorna 0.

  • Exemplos

    • Exemplo 1: Localize a posição da string ab na string abchelloabc. Instrução de exemplo:

      -- Returns 1.
      select locate('ab', 'abchelloabc');
    • Exemplo 2: Localize a posição da string hi na string abchelloabc. Instrução de exemplo:

      -- Returns 0.
      select locate('hi', 'abc,hello,ab,c');
    • Exemplo 3: O parâmetro start_pos é NULL. Instrução de exemplo:

      -- Returns 0.
      select locate('ab', 'abhelloabc', null);

LPAD

  • Sintaxe

    string lpad(string <str1>, int <length>, string <str2>)
  • Descrição

    Preenche a string str1 à esquerda até atingir length caracteres, usando a string str2. Esta função é uma extensão no MaxCompute V2.0.

  • Parâmetros

    • str1: obrigatório. Tipo STRING. String a ser preenchida à esquerda.

    • length: obrigatório. Tipo INT. Número de caracteres para o preenchimento à esquerda.

    • str2: obrigatório. String de preenchimento.

  • Valor de retorno

    Retorna o tipo STRING. O valor de retorno segue estas regras:

    • Se length for menor que o comprimento de str1, retorna os length caracteres mais à esquerda de str1.

    • Se length for 0, retorna uma string vazia.

    • Se não houver parâmetros de entrada ou se qualquer parâmetro de entrada for NULL, retorna NULL.

  • Exemplos

    • Exemplo 1: Use a string 12 para preencher a string abcdefgh à esquerda até 10 caracteres. O comando de exemplo é o seguinte.

      -- Returns 12abcdefgh.
      select lpad('abcdefgh', 10, '12');
    • Exemplo 2: Use a string 12 para preencher a string abcdefgh à esquerda até um comprimento de 5 caracteres. O comando de exemplo é o seguinte.

      -- Returns abcde.
      select lpad('abcdefgh', 5, '12');
    • Exemplo 3: O parâmetro length é 0. Instrução de exemplo:

      -- Returns empty string.
      select lpad('abcdefgh' ,0, '12'); 
    • Exemplo 4: Um dos parâmetros de entrada é NULL. Instrução de exemplo:

      -- Returns NULL.
      select lpad(null ,0, '12');

LTRIM

  • Sintaxe

    string ltrim(string <str>[, <trimChars>])
    string trim(leading [<trimChars>] from <str>)
  • Descrição

    Remove caracteres da extremidade esquerda de str:

    • Se trimChars não for especificado, remove os espaços à esquerda por padrão.

    • Ao especificar trimChars, a função trata os caracteres em trimChars como um conjunto e remove da extremidade esquerda de str a maior substring possível composta inteiramente por caracteres do conjunto trimChars.

  • Parâmetros

    • str: obrigatório. Tipo STRING. String a ser aparada. Se a entrada for BIGINT, DECIMAL, DOUBLE ou DATETIME, será convertida implicitamente para STRING.

    • trimChars: opcional. Tipo STRING. Caracteres a serem removidos.

  • Valor de retorno

    Retorna o tipo STRING. O valor de retorno segue estas regras:

    • Se str não for STRING, BIGINT, DOUBLE, DECIMAL ou DATETIME, retorna um erro.

    • Se str ou trimChars for NULL, retorna NULL.

  • Exemplos

    • Exemplo 1: Remova os espaços à esquerda da string yxTxyomxx . Instruções de exemplo:

      -- Returns yxTxyomxx.
      select ltrim(' yxTxyomxx ');
      -- Equivalent to:
      select trim(leading from ' yxTxyomxx ');
    • Exemplo 2: Remova todos os caracteres à esquerda da string yxTxyomxx que estejam no conjunto xy.

      -- Returns Txyomxx. Any leading x or y is removed.
      select ltrim('yxTxyomxx', 'xy');
      -- Equivalent to:
      select trim(leading 'xy' from 'yxTxyomxx');
    • Exemplo 3: O parâmetro de entrada é NULL. Instruções de exemplo:

      -- Returns NULL.
      select ltrim(null);
      select ltrim('yxTxyomxx', null);

MASK_HASH

  • Sintaxe

    mask_hash(<expr>)
  • Descrição

    Retorna um valor de hash calculado a partir da expressão de string expr. Valores de hash idênticos indicam valores de expressão idênticos.

  • Parâmetros

    expr: obrigatório. Expressão de string para o cálculo do hash. Aceita os tipos STRING, CHAR, VARCHAR e BINARY.

  • Valor de retorno

    Retorna um valor de hash de 64 bytes. Para expressões que não sejam strings, retorna null (compatível com Hive).

  • Exemplo

    -- Returns hash for abc
    select mask_hash("abc");
    -- Returns
    +------------+
    | _c0        |
    +------------+
    | ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad |
    +------------+
    
    -- Returns NULL for non-string input
    select mask_hash(100);
    -- Returns
    +------------+
    | _c0        |
    +------------+
    | NULL       |
    +------------+

MD5

  • Sintaxe

    string md5(string <str>)
  • Descrição

    Calcula o hash MD5 da string str.

  • Parâmetros

    str: obrigatório. Tipo STRING. Se a entrada for BIGINT, DOUBLE, DECIMAL ou DATETIME, será convertida implicitamente para STRING.

  • Valor de retorno

    Retorna o tipo STRING. O valor de retorno segue estas regras:

    • Se str não for STRING, BIGINT, DOUBLE, DECIMAL ou DATETIME, retorna um erro.

    • Se str for NULL, retorna NULL.

  • Exemplos

    • Exemplo 1: Calcule o hash MD5 da string Tech on the net. Instrução de exemplo:

      -- Returns ddc4c4796880633333d77a60fcda9af6.
      select md5('Tech on the net');
    • Exemplo 2: O parâmetro de entrada é NULL. Instrução de exemplo:

      -- Returns NULL.
      select md5(null);

PARSE_URL

  • Sintaxe

    string parse_url(string <url>, string <part>[, string <key>])
  • Descrição

    Analisa a url e extrai as informações indicadas por part.

  • Parâmetros

    • url: obrigatório. Tipo STRING. Link da URL. URLs inválidas retornam um erro.

    • part: obrigatório. Tipo STRING. Valores válidos: HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, USERINFO (não diferencia maiúsculas de minúsculas).

    • key: opcional. Quando part for QUERY, retorna o valor para key.

  • Descrição do retorno

    Retorna o tipo STRING. O valor de retorno segue estas regras:

    • Se url, part ou key for NULL, retorna NULL.

    • Se part for inválido, retorna um erro.

  • Exemplo

    -- Returns example.com.
    select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'HOST');
    -- Returns /over/there/index.dtb.
    select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'PATH');
    -- Returns animal.
    select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'QUERY', 'type');
    -- Returns nose.
    select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'REF');
    -- Returns file.
    select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'PROTOCOL');
    -- Returns username:password@example.com:8042.
    select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'AUTHORITY');
    -- Returns username:password.
    select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'USERINFO');

PARSE_URL_TUPLE

  • Sintaxe

    string parse_url_tuple(string <url>, string <key1>, string <key2>,...)
  • Descrição

    Analisa a url e extrai as strings definidas pelas chaves de entrada key1, key2, etc. É semelhante a PARSE_URL, mas extrai múltiplas chaves simultaneamente com melhor desempenho.

  • Parâmetros

    • url: obrigatório. Tipo STRING. Link da URL. URLs inválidas retornam um erro.

    • key1, key2: obrigatório. Tipo STRING. Chaves a serem extraídas. Valores válidos:

      • HOST: Endereço do host (domínio ou IP).

      • PATH: Caminho para o recurso de rede no servidor.

      • QUERY: String de consulta (conteúdo a ser consultado).

      • REF: indica o identificador de fragmento de uma URL, que é o conteúdo após o símbolo #.

      • PROTOCOL: Tipo de protocolo.

      • AUTHORITY: Domínio/IP do servidor, porta e informações de autenticação do usuário (nome de usuário, senha).

      • FILE: Caminho e conteúdo da consulta (PATH + QUERY).

      • USERINFO: Informações de autenticação do usuário.

      • QUERY:<KEY>: Valor para a chave especificada na string de consulta.

      Não diferencia maiúsculas de minúsculas. Valores inválidos retornam um erro.

  • Descrição do retorno

    Retorna o tipo STRING. Se url ou key for NULL, retorna um erro.

  • Exemplo

    Extraia as strings para cada chave a partir de file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose. Instrução de exemplo:

    select parse_url_tuple('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'HOST', 'PATH', 'QUERY', 'REF', 'PROTOCOL', 'AUTHORITY', 'FILE', 'USERINFO', 'QUERY:type', 'QUERY:name') as (item0, item1, item2, item3, item4, item5, item6, item7, item8, item9);

    Retorna:

    +------------+------------+------------+------------+------------+------------+------------+------------+------------+------------+
    | item0      | item1      | item2      | item3      | item4      | item5      | item6      | item7      | item8      | item9      |
    +------------+------------+------------+------------+------------+------------+------------+------------+------------+------------+
    | example.com | /over/there/index.dtb | type=animal&name=narwhal | nose       | file       | username:password@example.com:8042 | /over/there/index.dtb?type=animal&name=narwhal | username:password | animal     | narwhal    |
    +------------+------------+------------+------------+------------+------------+------------+------------+------------+------------+

REGEXP_COUNT

  • Sintaxe

    bigint regexp_count(string <source>, string <pattern>[, bigint <start_position>])
  • Descrição

    Conta as substrings em source a partir de start_position que correspondem ao pattern definido.

  • Parâmetros

    • source: obrigatório. Tipo STRING. String a ser pesquisada. Outros tipos retornam um erro.

    • pattern: obrigatório. Constante STRING ou expressão regular. Padrão a ser correspondido. Para obter mais diretrizes sobre expressões regulares, consulte RLIKE string matching. Um pattern vazio ou inválido retorna um erro.

    • start_position: opcional. Uma constante do tipo BIGINT. O valor deste parâmetro deve ser maior que 0. Se o valor for de outro tipo de dado ou for menor ou igual a 0, um erro será retornado. Se não o especificar, o valor padrão é 1. Esse valor indica que a pesquisa começa a partir do primeiro caractere da string source.

  • Valor de retorno

    Retorna o tipo BIGINT. O valor de retorno segue estas regras:

    • Se nenhuma correspondência for encontrada, retorna 0.

    • Se source, pattern ou start_position for NULL, retorna NULL.

  • Exemplos

    • Exemplo 1: Conte as substrings correspondentes em abababc a partir da posição definida. Instruções de exemplo:

      -- Returns 1.
      select regexp_count('abababc', 'a.c');
      -- Returns 2.
      select regexp_count('abababc', '[[:alpha:]]{2}', 3);
    • Exemplo 2: Um dos parâmetros de entrada é NULL. Instrução de exemplo:

      -- Returns NULL.
      select regexp_count('abababc', null);
    • Exemplo 3: Conte as ocorrências de : na string JSON {"account_id":123456789,"account_name":"allen","location":"hangzhou","bill":100}. Instrução de exemplo:

      -- Returns 4.
      select regexp_count('{"account_id":123456789,"account_name":"allen","location":"hangzhou","bill":100}',':');

REGEXP_EXTRACT

  • Sintaxe

    string regexp_extract(string <source>, string <pattern>[, bigint <groupid>])
    Nota

    Nas versões de tipos de dados compatíveis com Hive, REGEXP_EXTRACT segue a especificação de regex do Java. Nas versões de tipos de dados 1.0 e 2.0, segue a especificação do MaxCompute.

  • Descrição

    Divide a string source em grupos usando pattern e retorna a string do grupo groupid.

  • Parâmetros

    • source: obrigatório. Tipo STRING. A string a ser dividida.

    • pattern: obrigatório. Constante STRING ou expressão regular. O padrão a ser correspondido. Para obter mais diretrizes sobre expressões regulares, consulte RLIKE string matching.

    • groupid: opcional. Constante BIGINT, deve ser ≥0.

    Nota

    Os dados são armazenados no formato UTF-8. Os caracteres chineses podem ser representados em hexadecimal no intervalo [\\x{4e00},\\x{9fa5}].

  • Valor de retorno

    Retorna o tipo STRING. O valor de retorno segue estas regras:

    • Se pattern for uma string vazia ou se nenhum grupo for especificado em pattern, a função retorna um erro.

    • Se groupid não for do tipo BIGINT ou for menor que 0, a função retorna um erro. Se você não especificar esse parâmetro, o valor padrão será 1, o que indica que a substring do primeiro grupo é retornada. Se você definir groupid como 0, a função retorna a substring que corresponde a todo o pattern.

    • Se source, pattern ou groupid for NULL, retorna NULL.

REGEXP_EXTRACT_ALL

  • Sintaxe

    array<T> regexp_extract_all(string <source>, string <pattern>[,bigint <group_id>])
  • Descrição

    Encontra todas as substrings que correspondem a um padrão de expressão regular em uma string e as retorna como um array.

  • Parâmetros

    • source: obrigatório. Tipo STRING. A string a ser analisada.

    • pattern: obrigatório. Tipo STRING. O padrão a ser correspondido. Pode ser uma constante STRING ou uma expressão regular. Para obter mais diretrizes sobre expressões regulares, consulte RLIKE string matching.

    • group_id: opcional. Um valor BIGINT. Este parâmetro especifica o ID do grupo usado para corresponder ao padrão. O valor deste parâmetro deve ser maior ou igual a 0. Se você não especificar este parâmetro, o grupo com group_id igual a 1 será usado para corresponder ao padrão. Se você definir este parâmetro como 0, o pattern será correspondido como um todo.

  • Valor de retorno

    Um valor ARRAY é retornado. Se você especificar group_id, a função retorna um array contendo todos os resultados correspondentes para o group_id especificado. Se você não especificar group_id, a função retorna um array contendo todos os resultados correspondentes para o group_id 1.

  • Exemplo

    • Se você não especificar group_id, o comportamento padrão é retornar os resultados que correspondem ao primeiro group_id.

      SELECT regexp_extract_all('100-200, 300-400', '(\\d+)-(\\d+)');

      Retorna:

      +------------+
      | _c0        |
      +------------+
      | [100,300] |
      +------------+
    • Se você definir o valor de group_id como 2, a função retorna o resultado correspondente ao segundo group_id.

      SELECT regexp_extract_all('100-200, 300-400', '(\\d+)-(\\d+)',2);

      O resultado é o seguinte.

      +------------+
      | _c0        |
      +------------+
      | [200,400] |
      +------------+

REGEXP_INSTR

  • Sintaxe

    bigint regexp_instr(string <source>, string <pattern>[,bigint <start_position>[, bigint <occurrence>[, bigint <return_option>]]])
  • Descrição

    Retorna a posição inicial ou final da occurrence especificada de uma substring que corresponde a pattern em source, começando a partir de start_position.

  • Parâmetros

    • source: obrigatório. A string de origem. O tipo de dados deve ser STRING.

    • pattern: obrigatório. O padrão a ser correspondido. O valor pode ser uma constante STRING ou uma expressão regular. Para obter mais informações sobre expressões regulares, consulte RLIKE string matching. Um pattern vazio retorna um erro.

    • start_position: opcional. A posição a partir da qual a pesquisa começa. O valor deve ser uma constante BIGINT. O valor padrão é 1.

    • occurrence: opcional. A ocorrência da correspondência a ser encontrada. O valor deve ser uma constante BIGINT. O valor padrão é 1, o que indica a primeira correspondência.

    • return_option: opcional. A posição a ser retornada. O valor deve ser uma constante BIGINT. Valores válidos: 0 especifica a posição inicial e 1 especifica a posição final. O valor padrão é 0. Se você especificar um valor inválido, a função retorna um erro.

  • Valor de retorno

    O valor de retorno é do tipo BIGINT. O parâmetro return_option especifica se a função deve retornar a posição inicial ou final da substring correspondente em source. O valor de retorno é determinado pelas seguintes regras:

    • Se pattern estiver vazio, a função retorna um erro.

    • Se o valor de start_position ou occurrence não for uma constante BIGINT ou for menor ou igual a 0, a função retorna um erro.

    • Se o valor de source, pattern, start_position, occurrence ou return_option for NULL, a função retorna NULL.

  • Exemplos

    • Exemplo 1: Retorne a posição inicial da 2ª ocorrência de uma substring que corresponde a o[[:alpha:]]{1} na string i love www.taobao.com, começando a partir da posição 3. Instrução de exemplo:

      -- Returns 14.
      select regexp_instr('i love www.taobao.com', 'o[[:alpha:]]{1}', 3, 2);
    • Exemplo 2: Retorne a posição final da ocorrência second de uma substring que corresponde a o[[:alpha:]]{1} na string i love www.taobao.com. A pesquisa começa a partir do caractere third. Instrução de exemplo:

      -- Returns 16.
      select regexp_instr('i love www.taobao.com', 'o[[:alpha:]]{1}', 3, 2, 1);
    • Exemplo 3: Um parâmetro de entrada é NULL. Instrução de exemplo:

      -- Returns NULL.
      select regexp_instr('i love www.taobao.com', null, 3, 2);

REGEXP_REPLACE

  • Sintaxe

    string regexp_replace(string <source>, string <pattern>, string <replace_string>[, bigint <occurrence>])
    Nota

    Para tipos de dados compatíveis com Hive, a função REGEXP_REPLACE segue a especificação de expressão regular do Java. Para os tipos de dados 1.0 e 2.0, segue a especificação do MaxCompute.

  • Descrição

    Substitui a substring que corresponde ao pattern na posição especificada por occurrence na string source por replace_string e retorna o resultado.

  • Parâmetros

    • source: obrigatório. Um valor do tipo STRING. Esta é a string de origem a ser modificada.

    • pattern: obrigatório. Uma constante STRING ou uma expressão regular. Este é o padrão a ser correspondido. Para obter mais informações sobre as regras de expressão regular, consulte RLIKE string matching. Se o pattern estiver vazio, a função retorna um erro.

    • replace_string: obrigatório. Um valor do tipo STRING. Esta é a string que substitui a substring que corresponde ao pattern.

      Nota
      • Se replace_string for uma string vazia, a função exclui a substring que corresponde ao pattern.

      • O replace_string pode conter referências inversas no formato \n para inserir a substring que corresponde ao enésimo grupo de captura no pattern. O valor de n pode ser um número inteiro de 1 a 9. \0 insere toda a substring que corresponde ao pattern. Você deve escapar as barras invertidas, como \\1, ou usar uma string bruta, como R'(\1)'.

    • occurrence: opcional. Uma constante do tipo BIGINT, que deve ser maior ou igual a 0. O valor deste parâmetro indica que a string que corresponde ao padrão especificado na enésima ocorrência especificada por occurrence é substituída por replace_string. Se você definir este parâmetro como 0, todas as substrings que correspondem ao padrão especificado serão substituídas. Se for de outro tipo de dados ou menor que 0, a função retorna um erro. Valor padrão: 0.

  • Valor de retorno

    Um valor do tipo STRING é retornado. O valor de retorno é determinado pelas seguintes regras:

    • Se você referenciar um grupo que não existe, o resultado é indefinido.

    • Se replace_string for NULL e uma correspondência para o pattern for encontrada, a função retorna NULL.

    • Se replace_string for NULL e não houver correspondência para o pattern, a função retorna a string original.

    • Se source, pattern ou occurrence for NULL, a função retorna NULL.

  • Exemplos

    • Exemplo 1: Substitua substrings com base em regras especificadas.

      -- Returns Abcd.
      select regexp_replace("abcd", "a", "A", 0);
      -- Returns bcd.
      select regexp_replace("abcd", "a", "", 0);
      -- Returns 19700101.
      select regexp_replace("1970-01-01", "-", "", 0);
      -- Returns abc.
      select regexp_replace("a1b2c3", "[0-9]", "", 0);
      -- Returns a1b2c.
      select regexp_replace("a1b2c3", "[0-9]", "", 3);
    • Exemplo 2: Substitua todas as correspondências do padrão ([[:digit:]]{3})\\.([[:digit:]]{3})\\.([[:digit:]]{4}) na string 123.456.7890 por (\\1)\\2-\\3. Instrução de exemplo:

      -- Returns (123)456-7890.
      select regexp_replace('123.456.7890', '([[:digit:]]{3})\\.([[:digit:]]{3})\\.([[:digit:]]{4})',
      '(\\1)\\2-\\3', 0);
    • Exemplo 3: Substitua substrings que correspondem a um padrão na string abcd com base em regras especificadas. Instruções de exemplo:

      -- Returns a b c d.
      select regexp_replace('abcd', '(.)', '\\1 ', 0);
      -- Returns a bcd.
      select regexp_replace('abcd', '(.)', '\\1 ', 1);
      -- Returns d.
      select regexp_replace("abcd", "(.*)(.)$", "\\2", 0);
    • Exemplo 4: A tabela url_set contém uma coluna URL onde os valores estão no formato www.simple@xxx.com. A parte xxx é exclusiva para cada linha. Este exemplo substitui todos os caracteres após www. Instrução de exemplo:

      -- Returns wwwtest.
      select regexp_replace(url,'(www)(.*)','wwwtest',0) from url_set;
    • Exemplo 5: Um parâmetro de entrada é NULL. Instrução de exemplo:

      -- Returns NULL.
      select regexp_replace('abcd', '(.)', null, 0);
    • Exemplo 6: Referencie um grupo que não existe. Instruções de exemplo:

      -- Pattern defines only one group; second group reference doesn't exist.
      -- Avoid this usage; result is undefined.
      regexp_replace("abcd", "(.)", "\\2", 0) = "" or "abcd"
      -- Pattern has no groups; \1 references non-existent group.
      -- Avoid this usage; result is undefined.
      regexp_replace("abcd", "a", "\\1", 0) = "bcd" or "abcd"

REGEXP_SUBSTR

  • Sintaxe

    string regexp_substr(string <source>, string <pattern>[, bigint <start_position>[, bigint <occurrence>]])
  • Descrição

    Retorna a substring a partir da start_position na string source que corresponde ao pattern na ocorrência especificada por occurrence.

  • Parâmetros

    • source: obrigatório. Tipo STRING. A string a ser pesquisada.

    • pattern: obrigatório. Constante STRING ou expressão regular. O padrão a ser correspondido. A sintaxe de expressão regular é descrita em RLIKE string matching.

    • start_position: opcional. Constante BIGINT. O valor deve ser maior que 0. Se você não especificar este parâmetro, o valor padrão será 1, o que indica que a pesquisa começa a partir do primeiro caractere da string source.

    • occurrence: opcional. Constante BIGINT. O valor deve ser maior que 0. O valor padrão é 1, o que indica a primeira correspondência.

  • Valor de retorno

    Retorna uma STRING. O valor de retorno segue estas regras:

    • Se o pattern estiver vazio, ocorre um erro.

    • Se nenhuma correspondência for encontrada, a função retorna NULL.

    • Se start_position ou occurrence não for um BIGINT ou for menor ou igual a 0, ocorre um erro.

    • Se source, pattern, start_position ou occurrence for NULL, a função retorna NULL.

  • Exemplos

    • Exemplo 1: Retorne a substring que corresponde ao padrão especificado em I love aliyun very much. Instrução de exemplo:

      -- Returns aliyun.
      select regexp_substr('I love aliyun very much', 'a[[:alpha:]]{5}');
      -- Returns have.
      select regexp_substr('I have 2 apples and 100 bucks!', '[[:blank:]][[:alnum:]]*', 1, 1);
      -- Returns 2.
      select regexp_substr('I have 2 apples and 100 bucks!', '[[:blank:]][[:alnum:]]*', 1, 2);
    • Exemplo 2: Um parâmetro de entrada é NULL. Instrução de exemplo:

      -- Returns NULL.
      select regexp_substr('I love aliyun very much', null);

REPEAT

  • Sintaxe

    string repeat(string <str>, bigint <n>)
  • Descrição

    Retorna a string str repetida n vezes.

  • Parâmetros

    • str: obrigatório. Tipo STRING. Se a entrada for BIGINT, DOUBLE, DECIMAL ou DATETIME, será implicitamente convertida para STRING.

    • n: obrigatório. Tipo BIGINT. O tamanho do valor não deve exceder 2 MB.

  • Valor de retorno

    Retorna um valor do tipo STRING. O valor de retorno segue estas regras:

    • Se str não for do tipo STRING, BIGINT, DOUBLE, DECIMAL ou DATETIME, a função retorna um erro.

    • Se n estiver vazio, a função retorna um erro.

    • Se str ou n for NULL, a função retorna NULL.

  • Exemplos

    • Exemplo 1: Repita a string abc 5 vezes. Instrução de exemplo:

      -- Returns abcabcabcabcabc.
      select repeat('abc', 5); 
    • Exemplo 2: Um parâmetro de entrada é NULL. Instrução de exemplo:

      -- Returns NULL.
      select repeat('abc', null);

REPLACE

  • Sintaxe

    string replace(string <str>, string <old>, string <new>)
  • Descrição

    Substitui todas as ocorrências de old por new em str e retorna a str modificada. Se nenhuma correspondência for encontrada, a função retorna a str original. Esta é uma função de extensão do MaxCompute V2.0.

  • Parâmetros

    • str: obrigatório. Tipo STRING. A string de origem.

    • old: obrigatório. A string a ser comparada.

    • new: obrigatório. Tipo STRING. A string de substituição.

  • Valor de retorno

    Retorna um valor do tipo STRING. Se qualquer parâmetro de entrada for NULL, a função retorna NULL.

  • Exemplos

    • Exemplo 1: Substitua todas as ocorrências da substring abab por 12 na string ababab. Instrução de exemplo:

      -- Returns 12ab.
      select replace('ababab','abab','12');
    • Exemplo 2: Um dos parâmetros de entrada é NULL. Instrução de exemplo:

      -- Returns NULL.
      select replace('123abab456ab',null,'abab');

REVERSE

  • Sintaxe

    string reverse(string <str>)
  • Descrição

    Retorna o inverso da string str.

  • Parâmetros

    str: obrigatório. Um parâmetro do tipo STRING. Se a entrada for um valor BIGINT, DOUBLE, DECIMAL ou DATETIME, será implicitamente convertida para o tipo STRING.

  • Valor de retorno

    Retorna um valor do tipo STRING. As seguintes regras se aplicam:

    • Se o tipo de dados de str não for STRING, BIGINT, DOUBLE, DECIMAL ou DATETIME, a função retorna um erro.

    • Se str for NULL, a função retorna NULL.

  • Exemplos

    • Exemplo 1: Inverta a string I love aliyun very much. Instrução de exemplo:

      -- Returns hcum yrev nuyila evol I.
      select reverse('I love aliyun very much');
    • Exemplo 2: O parâmetro de entrada é NULL. Instrução de exemplo:

      -- Returns NULL.
      select reverse(null);

RPAD

  • Sintaxe

    string rpad(string <str1>, int <length>, string <str2>)
  • Descrição

    Preenche a string str1 à direita até atingir length caracteres, usando a string de preenchimento str2. Esta é uma função de extensão no MaxCompute V2.0.

  • Parâmetros

    • str1: obrigatório. Tipo STRING. A string a ser preenchida à direita.

    • length: obrigatório. Tipo INT. Deve ser maior ou igual a 0. Especifica o número de caracteres no resultado preenchido.

    • str2 (obrigatório): A string usada para preenchimento.

  • Valor de retorno

    Retorna o tipo STRING. O valor de retorno segue estas regras:

    • Se length for menor que o tamanho de str1, a função retorna os length caracteres mais à esquerda de str1.

    • Se length for 0, a função retorna uma string vazia.

    • Se nenhum parâmetro de entrada for fornecido ou se qualquer parâmetro de entrada for NULL, a função retorna NULL.

  • Exemplos

    • Exemplo 1: Preencha a string abcdefgh à direita até 10 caracteres usando a string de preenchimento 12. Instrução de exemplo:

      -- Returns abcdefgh12.
      select rpad('abcdefgh', 10, '12');
    • Exemplo 2: Preencha a string abcdefgh à direita até 5 caracteres usando a string de preenchimento 12. Instrução de exemplo:

      -- Returns abcde.
      select rpad('abcdefgh', 5, '12');
    • Exemplo 3: length é 0. Instrução de exemplo:

      -- Returns empty string.
      select rpad('abcdefgh' ,0, '12'); 
    • Exemplo 4: Um parâmetro de entrada é NULL. Instrução de exemplo:

      -- Returns NULL.
      select rpad(null ,0, '12');

RTRIM

  • Sintaxe

    string rtrim(string <str>[, <trimChars>])
    string trim(trailing [<trimChars>] from <str>)
  • Descrição

    Remove caracteres da extremidade direita de str:

    • Se trimChars não for especificado, os espaços são removidos por padrão.

    • Se trimChars for especificado, os caracteres em trimChars são tratados como uma coleção. A substring mais longa da extremidade direita de str que consiste inteiramente em caracteres da coleção trimChars é removida.

  • Parâmetros

    • str: obrigatório. Tipo STRING. A string a ser aparada. Se a entrada for BIGINT, DECIMAL, DOUBLE ou DATETIME, será implicitamente convertida para STRING.

    • trimChars: opcional. Tipo STRING. Os caracteres a serem removidos.

  • Valor de retorno

    Retorna o tipo STRING. O valor de retorno segue estas regras:

    • Se str não for STRING, BIGINT, DOUBLE, DECIMAL ou DATETIME, a função retorna um erro.

    • Se str ou trimChars for NULL, a função retorna NULL.

  • Exemplos

    • Exemplo 1: Remova os espaços à direita da string yxTxyomxx . Instruções de exemplo:

      -- Returns  yxTxyomxx.
      select rtrim(' yxTxyomxx ');
      -- Equivalent to:
      select trim(trailing from ' yxTxyomxx ');
    • Exemplo 2: Remova todos os caracteres à direita da string yxTxyomxx que pertencem ao conjunto xy.

      -- Returns yxTxyom. Any trailing x or y is removed.
      select rtrim('yxTxyomxx', 'xy');
      -- Equivalent to:
      select trim(trailing 'xy' from 'yxTxyomxx');
    • Exemplo 3: O parâmetro de entrada é NULL. Instruções de exemplo:

      -- Returns NULL.
      select rtrim(null);
      select rtrim('yxTxyomxx', null);

SOUNDEX

  • Sintaxe

    string soundex(string <str>)
  • Descrição

    Converte uma string padrão em uma string SOUNDEX.

  • Parâmetros

    str: Obrigatório. A string a ser convertida. Este parâmetro é do tipo STRING. Esta função é uma extensão no MaxCompute V2.0.

  • Valor de retorno

    O valor de retorno é do tipo STRING. Se str for NULL, a função retornará NULL.

  • Exemplos

    • Exemplo 1: Converte a string hello em uma string SOUNDEX. Instrução de exemplo:

      -- Returns H400.
      select soundex('hello');
    • Exemplo 2: O parâmetro de entrada é NULL. Instrução de exemplo:

      -- Returns NULL.
      select soundex(null);

SPACE

  • Sintaxe

    string space(bigint <n>)
  • Descrição

    Gera uma string composta por n espaços.

  • Parâmetros

    n: obrigatório. Tipo BIGINT. O tamanho do valor não deve exceder 2 MB.

  • Valor de retorno

    Retorna uma STRING. O valor de retorno segue estas regras:

    • Se n estiver vazio, a função retorna um erro.

    • Se n for NULL, a função retorna NULL.

  • Exemplo

    -- Returns 10.
    select length(space(10));

SPLIT

  • Sintaxe

    ARRAY<STRING> SPLIT(STRING <source>, STRING <delimiter>[, BOOLEAN <trimTailEmpty>])
    
    -- Standard example.
    -- Returns ["a","b","c"].
    SELECT SPLIT('a,b,c', ',');
  • Parâmetros

    • source: Obrigatório. A string a ser dividida. O tipo de dado é STRING.

    • delimiter: Obrigatório. O separador usado para dividir a string. Este parâmetro aceita regular expressions. O tipo de dado é STRING.

    • trimTailEmpty: Opcional. Especifica se as strings vazias à direita devem ser mantidas. O valor padrão é true. Defina este parâmetro como false para manter as strings vazias à direita. O tipo de dado é BOOLEAN.

  • Valor de retorno

    Retorna um valor do tipo ARRAY<STRING>.

  • Exemplos

    • Exemplo 1: Dividir uma string usando vírgula.

      -- Returns ["a","b","c"].
      SELECT SPLIT('a,b,c', ',');
    • Exemplo 2: Lidar com casos em que o separador não existe.

      -- Returns ["a,b,c"].
      SELECT SPLIT('a,b,c', ':');
    • Exemplo 3: Lidar com separadores consecutivos. Isso cria um elemento de string vazia.

      -- Returns ["a","","b"].
      SELECT SPLIT('a,,b', ',');
    • Exemplo 4: Usar um separador de vários caracteres.

      -- Returns ["a","b","c"].
      SELECT SPLIT('a::b::c', '::');
    • Exemplo 5: Manter strings vazias à direita.

      -- By default, trailing empty strings are not returned.
      -- Returns ["a","b","c"].
      SELECT SPLIT('a,b,c,,', ',');
      
      -- Return trailing empty strings.
      -- Returns ["a","b","c","",""].
      SELECT SPLIT('a,b,c,,', ',', false);
    • Exemplo 6: Usar um caractere de escape ou especial como separador.

      -- Split by a line feed.
      -- Returns ["hello","world"].
      SELECT SPLIT('hello\nworld', '\n');  
      
      -- Split by a tab character.
      -- Returns ["a","b","c"].
      SELECT SPLIT('a\tb\tc', '\t');  
      
      -- Split by a carriage return.
      -- Returns ["line1","line2"].
      SELECT SPLIT('line1\rline2', '\r');  
      
      -- Escape a backslash.
      -- Returns ["a","b","c"].
      SELECT SPLIT('a\\b\\c', '\\\\');  
    • Exemplo 7: Lidar com entradas NULL.

      -- If any parameter is NULL, the function returns NULL.
      -- Returns NULL.
      SELECT SPLIT(NULL, ',');
      
      -- Returns NULL.
      SELECT SPLIT('a,b,c', NULL);
      
      -- Returns NULL.
      SELECT SPLIT('a,b,c', ',', NULL);

SPLIT_PART

  • Sintaxe

    string split_part(string <str>, string <separator>, bigint <start>[, bigint <end>])
  • Descrição

    Divide a string str usando o delimitador separator e retorna a substring da parte start até end (intervalo fechado).

  • Parâmetros

    • str: obrigatório. Tipo STRING. A string a ser dividida. Se a entrada for BIGINT, DOUBLE, DECIMAL ou DATETIME, ela será convertida implicitamente para STRING.

    • separator: obrigatório. Constante STRING. O delimitador (um único caractere ou string).

    • start: obrigatório. Constante BIGINT, deve ser maior que 0. O número da parte inicial (contando a partir de 1).

    • end: constante BIGINT maior ou igual a start. Este parâmetro especifica o número do segmento final a ser retornado. Se não for especificado, seu valor padrão será o valor de start, e apenas o segmento especificado por start será retornado.

  • Descrição do valor de retorno

    Retorna uma STRING. O valor de retorno segue estas regras:

    • Se start exceder o número real de partes (por exemplo, há 6 partes, mas start > 6), uma string vazia será retornada.

    • Se separator não for encontrado em str e start = 1, a str inteira é retornada. Se str estiver vazia, uma string vazia será retornada.

    • Se separator estiver vazio, a str original é retornada.

    • Se end exceder o número de partes, a substring de start até a última parte é retornada.

    • Se str não for do tipo STRING, BIGINT, DOUBLE, DECIMAL ou DATETIME, um erro será retornado.

    • Se separator não for uma constante STRING, um erro será retornado.

    • Se start ou end não for uma constante BIGINT, um erro será retornado.

    • Se qualquer parâmetro, exceto separator, for NULL, a função retorna NULL.

  • Exemplos

    • Exemplo 1: Dividir a string a,b,c,d usando o delimitador , e retornar as partes especificadas. Instruções de exemplo:

      -- Returns a.
      select split_part('a,b,c,d', ',', 1);
      -- Returns a,b.
      select split_part('a,b,c,d', ',', 1, 2);
    • Exemplo 2: start excede o número real de partes. Instrução de exemplo:

      -- Returns empty string.
      select split_part('a,b,c,d', ',', 10);
    • Exemplo 3: separator não é encontrado em str. Instruções de exemplo:

      -- Returns a,b,c,d.
      select split_part('a,b,c,d', ':', 1);
      -- Returns empty string.
      select split_part('a,b,c,d', ':', 2);
    • Exemplo 4: separator está vazio. Instrução de exemplo:

      -- Returns a,b,c,d.
      select split_part('a,b,c,d', '', 1);
    • Exemplo 5: end excede o número real de partes. Instrução de exemplo:

      -- Returns b,c,d.
      select split_part('a,b,c,d', ',', 2, 6);
    • Exemplo 6: Qualquer parâmetro de entrada, exceto separator, é NULL. Instrução de exemplo:

      -- Returns NULL.
      select split_part('a,b,c,d', ',', null);

SUBSTR

  • Sintaxe

    string substr(string <str>, bigint <start_position>[, bigint <length>])
  • Descrição

    Retorna uma substring de str começando em start_position com o comprimento de length.

  • Parâmetros

    • str: obrigatório. Tipo STRING. Se a entrada for BIGINT, DECIMAL, DOUBLE ou DATETIME, será convertida implicitamente para STRING.

    • start_position: obrigatório. Tipo BIGINT. A posição inicial padrão é 1.

      • Versão de tipo de dado compatível com Hive: Se start_position=0, comporta-se como a posição 1.

      • Versões de tipo de dado 1.0 e 2.0: Se start_position=0, retorna NULL.

    • length: opcional. Tipo BIGINT. O comprimento da substring deve ser >0.

      Importante
      • Se setproject odps.function.strictmode=false: um length<0 retorna em branco.

      • Se setproject odps.function.strictmode=true: um length<0 retorna um erro.

  • Valor de retorno

    Retorna o tipo STRING. O valor de retorno segue estas regras:

    • Se str não for STRING, BIGINT, DECIMAL, DOUBLE ou DATETIME, a função retorna um erro.

    • Se length não for BIGINT ou for ≤0, a função retorna um erro.

    • Se você omitir length, a substring se estende até o final de str.

    • Se str, start_position ou length for NULL, a função retorna NULL.

  • Exemplos

    • Exemplo 1: Retornar uma substring de abc a partir da posição especificada com o comprimento especificado. Instruções de exemplo:

      -- Returns bc.
      select substr('abc', 2);
      -- Returns b.
      select substr('abc', 2, 1);
      -- Returns bc.
      select substr('abc',-2 , 2);
    • Exemplo 2: Quando um parâmetro de entrada é NULL. Instrução de exemplo:

      -- Returns NULL.
      select substr('abc', null);

SUBSTRING

  • Sintaxe

    string substring(string|binary <str>, int <start_position>[, int <length>])
  • Descrição

    Retorna uma substring de str começando em start_position com length.

  • Parâmetros

    • str: obrigatório. Este parâmetro é do tipo STRING ou BINARY.

    • start_position: obrigatório. Este parâmetro é do tipo INT. A posição inicial é baseada em 1. Se start_position for 0, uma string vazia será retornada. Se start_position for um valor negativo, a posição é contada de trás para frente a partir do final da string. Nesse caso, -1 refere-se ao último caractere, e a contagem prossegue sequencialmente para trás.

    • length: opcional. Este parâmetro é do tipo BIGINT. O comprimento da substring deve ser maior que 0.

  • Valor de retorno

    O valor de retorno é do tipo STRING. Ele segue as seguintes regras:

    • Se str não for do tipo STRING ou BINARY, um erro será retornado.

    • Se length não for do tipo BIGINT ou for menor ou igual a 0, um erro será retornado.

    • Quando o parâmetro length é omitido, uma substring até o final de str é retornada.

    • Se str, start_position ou length for NULL, a função retorna NULL.

  • Exemplos

    • Exemplo 1: Este exemplo retorna uma substring de abc a partir de uma posição especificada com um comprimento especificado. Instruções de exemplo:

      -- Returns bc.
      select substring('abc', 2);
      -- Returns b.
      select substring('abc', 2, 1);
      -- Returns bc.
      select substring('abc',-2,2);
      -- Returns ab.
      select substring('abc',-3,2);
      -- Returns 001.
      substring(bin(2345), 2, 3);
    • Exemplo 2: Este exemplo mostra um caso em que um parâmetro de entrada é NULL. Instrução de exemplo:

      -- Returns NULL.
      select substring('abc', null, null);

SUBSTRING_INDEX

  • Sintaxe

    string substring_index(string <str>, string <separator>, int <count>)
  • Descrição

    Esta função extrai uma substring da string str, antes ou depois da count-ésima ocorrência de um delimitador. Se count for positivo, a busca pelo delimitador começa da esquerda. Se count for negativo, a busca começa da direita. Esta função é uma extensão do MaxCompute V2.0.

  • Parâmetros

    • str: obrigatório. Tipo STRING. É a string de onde a extração será feita.

    • separator: obrigatório. Delimitador do tipo STRING.

    • count: Obrigatório. Um valor INT que especifica a posição do separador.

  • Valor de retorno

    A função retorna um valor do tipo STRING. Se qualquer parâmetro de entrada for NULL, a função retorna NULL.

  • Exemplos

    • Exemplo 1: Extrai da string https://www.alibabacloud.com. Instruções de exemplo:

      -- Returns https://www.alibabacloud.
      select substring_index('https://www.alibabacloud.com', '.', 2);
      -- Returns alibabacloud.com.
      select substring_index('https://www.alibabacloud.com', '.', -2);
    • Exemplo 2: Um parâmetro de entrada é NULL. Instrução de exemplo:

      -- Returns NULL.
      select substring_index('https://www.alibabacloud.com', null, 2);

TO_CHAR

  • Sintaxe

    string to_char(boolean <value>)
    string to_char(bigint <value>)
    string to_char(double <value>)
    string to_char(decimal <value>)
  • Descrição

    Converte valores do tipo BOOLEAN, BIGINT, DECIMAL ou DOUBLE em suas representações STRING.

  • Parâmetros

    value: obrigatório. Um valor do tipo BOOLEAN, BIGINT, DECIMAL ou DOUBLE.

  • Valor de retorno

    Retorna um valor do tipo STRING. O valor de retorno segue estas regras:

    • Se value não for do tipo BOOLEAN, BIGINT, DECIMAL ou DOUBLE, a função retorna um erro.

    • Se value for NULL, a função retorna NULL.

  • Exemplos

    • Exemplo 1: Converter valores para a representação STRING. Instrução de exemplo:

      -- Returns 123.
      select to_char(123);
      -- Returns TRUE.
      select to_char(true);
      -- Returns 1.23.
      select to_char(1.23);
    • Exemplo 2: O parâmetro de entrada é NULL. Instrução de exemplo:

      -- Returns NULL.
      select to_char(null);

TO_JSON

  • Sintaxe

    string to_json(<expr>)
  • Descrição

    Converte uma expressão especificada por expr de um determinado tipo de dado complexo em uma string JSON.

  • Parâmetros

    expr: obrigatório. Uma expressão do tipo ARRAY, MAP ou STRUCT.

    Nota

    Se a expressão de entrada for do tipo STRUCT (struct<key1:value1, key2:value2>), observe os seguintes pontos:

    • Todas as chaves são convertidas em letras minúsculas ao converter a expressão em uma string JSON.

    • Se um value for nulo, o par chave-valor ao qual o value pertence não será incluído na string JSON retornada. Por exemplo, se value2 for nulo, key2:value2 não será incluído na string JSON retornada.

  • Valor de retorno

    Uma string JSON é retornada.

  • Exemplos

    • Exemplo 1: Converter uma expressão de um determinado tipo de dado complexo em uma string JSON. Instrução de exemplo:

      -- The return value is {"a":1,"b":2}. 
      select to_json(named_struct('a', 1, 'b', 2));
      -- The return value is {"time":"26/08/2015"}. 
      select to_json(named_struct('time', "26/08/2015"));
      -- The return value is [{"a":1,"b":2}]. 
      select to_json(array(named_struct('a', 1, 'b', 2)));
      -- The return value is {"a":{"b":1}}. 
      select to_json(map('a', named_struct('b', 1)));
      -- The return value is {"a":1}. 
      select to_json(map('a', 1));
      -- The return value is [{"a":1}]. 
      select to_json(array((map('a', 1))));
    • Exemplo 2: A expressão de entrada é do tipo STRUCT. Instrução de exemplo:

      -- The return value is {"a":"B"}. If the expression of the STRUCT type is converted into a JSON string, all keys are converted into lowercase letters. 
      select to_json(named_struct("A", "B"));
      -- The return value is {"k2":"v2"}. The key-value pair to which null belongs is not included in the JSON string that is returned. 
      select to_json(named_struct("k1", cast(null as string), "k2", "v2"));

TOLOWER

  • Sintaxe

    string tolower(string <source>)
  • Descrição

    Converte letras maiúsculas do alfabeto inglês na string source para minúsculas.

  • Parâmetros

    source: obrigatório. Um valor do tipo STRING. Se a entrada for um valor BIGINT, DOUBLE, DECIMAL ou DATETIME, será convertida implicitamente para o tipo STRING. Esta função opera apenas em caracteres do alfabeto inglês.

  • Valor de retorno

    Retorna um valor do tipo STRING. O valor retornado baseia-se nas seguintes regras:

    • Se o tipo de dado de source não for STRING, BIGINT, DOUBLE, DECIMAL ou DATETIME, um erro será retornado.

    • Se source for NULL, a função retorna NULL.

  • Exemplos

    • Exemplo 1: Converter letras maiúsculas em minúsculas. Instruções de exemplo:

      -- Returns abcd.
      select tolower('aBcd');
    • Exemplo 2: O parâmetro de entrada é NULL. Instrução de exemplo:

      -- Returns NULL.
      select tolower(null);

TOUPPER

  • Sintaxe

    string toupper(string <source>)
  • Descrição

    Converte os caracteres minúsculos na string source em seus respectivos caracteres maiúsculos.

  • Parâmetros

    source: obrigatório. Tipo STRING. Se a entrada for BIGINT, DOUBLE, DECIMAL ou DATETIME, será convertida implicitamente para STRING. Aceita apenas caracteres do alfabeto inglês.

  • Valor de retorno

    Retorna um valor do tipo STRING. O valor retornado baseia-se nas seguintes regras:

    • Se o tipo de dado de source não for STRING, BIGINT, DOUBLE, DECIMAL ou DATETIME, um erro será retornado.

    • Se source for NULL, a função retorna NULL.

  • Exemplos

    • Exemplo 1: Converter letras minúsculas em maiúsculas. Instruções de exemplo:

      -- Returns ABCD.
      select toupper('aBcd');
    • Exemplo 2: O parâmetro de entrada é NULL. Instrução de exemplo:

      -- Returns NULL.
      select toupper(null);

TRANSLATE

  • Sintaxe

    string translate(string|varchar <str1>, string|varchar <str2>, string|varchar <str3>)
  • Descrição

    Substitui cada caractere em str1 que aparece em str2 pelo caractere correspondente em str3. Se nenhuma correspondência for encontrada, nenhuma substituição ocorrerá. Esta função é uma extensão no MaxCompute V2.0.

  • Valor de retorno

    Retorna uma STRING. Se qualquer parâmetro de entrada for NULL, a função retorna NULL.

  • Exemplos

    • Exemplo 1: Substituir cada caractere em ababab que aparece em abab pelo caractere correspondente em cd. Instrução de exemplo:

      -- Returns cdcdcd.
      select translate('ababab','abab','cd');
    • Exemplo 2: Substituir cada caractere em ababab que aparece em abab pelo caractere correspondente em cdefg. Instrução de exemplo:

      -- Returns cdcdcd.
      select translate('ababab','abab','cdefg');
    • Exemplo 3: Um parâmetro de entrada é NULL. Instrução de exemplo:

      -- Returns NULL.
      select translate('ababab','cd',null);

TRIM

  • Sintaxe

    string trim(string <str>[,<trimChars>])
    string trim([BOTH] [<trimChars>] from <str>)
  • Descrição

    Remove caracteres de ambas as extremidades de str:

    • Por padrão, a função remove espaços. Especifique trimChars para alterar esse comportamento.

    • Se você especificar trimChars, a função trata os caracteres em trimChars como um conjunto e remove as substrings mais longas possíveis, compostas apenas por caracteres desse conjunto, de ambas as extremidades (esquerda e direita) de str.

  • Parâmetros

    • str: obrigatório. Tipo STRING. A string a ser aparada. Se a entrada for BIGINT, DECIMAL, DOUBLE ou DATETIME, será convertida implicitamente para STRING.

    • trimChars: opcional. Tipo STRING. Os caracteres a serem removidos.

  • Valor de retorno

    Retorna o tipo STRING. O valor de retorno segue estas regras:

    • Se str não for STRING, BIGINT, DOUBLE, DECIMAL ou DATETIME, a função retorna um erro.

    • Se str ou trimChars for NULL, a função retorna NULL.

  • Exemplos

    • Exemplo 1: Remover espaços de ambas as extremidades da string yxTxyomxx . Instruções de exemplo:

      -- Returns yxTxyomxx.
      select trim(' yxTxyomxx ');
      -- Equivalent to:
      select trim(both from ' yxTxyomxx ');
      select trim(from ' yxTxyomxx ');
    • Exemplo 2: Remover todos os caracteres de ambas as extremidades da string yxTxyomxx que pertencem ao conjunto xy.

      -- Returns Txyom. Any x or y on either end is removed.
      select trim('yxTxyomxx', 'xy');
      -- Equivalent to:
      select trim(both 'xy' from 'yxTxyomxx');
      select trim('xy' from 'yxTxyomxx');
    • Exemplo 3: O parâmetro de entrada é NULL. Instruções de exemplo:

      -- Returns NULL.
      select trim(null);
      select trim('yxTxyomxx', null);

URL_DECODE

  • Sintaxe

    string url_decode(string <input>[, string <encoding>])
  • Descrição

    Converte uma string de entrada do formato application/x-www-form-urlencoded MIME para caracteres padrão. Esta função é o inverso de url_encode. As regras de codificação são as seguintes:

    • a–z e A–Z permanecem inalterados.

    • Ponto (.), hífen (-), asterisco (*) e sublinhado (_) permanecem inalterados.

    • O sinal de mais (+) é convertido em espaço.

    • Sequências no formato %xy são convertidas em valores de byte. Bytes consecutivos são decodificados em strings usando o nome de encoding especificado.

    • Todos os outros caracteres permanecem inalterados.

  • Parâmetros

    • input: Este parâmetro é obrigatório e do tipo STRING. Representa a string de entrada.

    • encoding: Este parâmetro é opcional e especifica o formato de codificação. Aceita formatos como GBK e UTF-8. Se não for especificado, a codificação padrão é UTF-8.

  • Valor de retorno

    Esta função retorna um tipo STRING codificado em UTF-8. Se o parâmetro input ou encoding for NULL, a função retorna NULL.

  • Exemplo

    -- Returns examplefor url_decode:// (fdsf).
    select url_decode('%E7%A4%BA%E4%BE%8Bfor+url_decode%3A%2F%2F+%28fdsf%29');
    -- Returns Example for URL_DECODE:// dsf(fasfs).
    select url_decode('Example+for+url_decode+%3A%2F%2F+dsf%28fasfs%29', 'GBK');

URL_ENCODE

  • Sintaxe

    string url_encode(string <input>[, string <encoding>])
  • Descrição

    Codifica uma string de entrada no formato application/x-www-form-urlencoded MIME. Regras de codificação:

    • As letras de a a z e de A a Z permanecem inalteradas.

    • O ponto (.), o hífen (-), o asterisco (*) e o sublinhado (_) permanecem inalterados.

    • Os espaços se convertem em sinais de mais (+).

    • A função converte todos os outros caracteres em valores de byte usando a encoding especificada. Cada byte é representado como %xy, onde xy corresponde à representação hexadecimal do caractere.

  • Parâmetros

    • input: obrigatório. Tipo STRING. A string de entrada.

    • encoding: opcional. Formato de codificação. Inclui os formatos GBK e UTF-8. Se não especificado, o padrão é UTF-8.

  • Valor de retorno

    Retorna uma STRING. Caso input ou encoding seja NULL, o retorno é NULL.

  • Exemplo

    -- Returns %E7%A4%BA%E4%BE%8Bfor+url_encode%3A%2F%2F+%28fdsf%29.
    select url_encode('examplefor url_encode:// (fdsf)');
    -- Returns Example+for+url_encode+%3A%2F%2F+dsf%28fasfs%29.
    select url_encode('Example for url_encode:// dsf(fasfs)', 'GBK');

Referências

Para ir além das funções integradas, crie funções definidas pelo usuário (UDFs). Para mais informações, consulte Overview.