Todos os produtos
Search
Central de documentação

MaxCompute:SUBSTR

Última atualização: Jun 26, 2026

Retorna uma substring de str a partir de start_position, opcionalmente limitada a length caracteres.

Sintaxe

STRING SUBSTR(STRING <str>, BIGINT <start_position>[, BIGINT <length>])

Parâmetros

Parâmetro

Obrigatório

Tipo

Descrição

str

Sim

STRING

A string source. Valores BIGINT, DECIMAL, DOUBLE e DATETIME são convertidos implicitamente para STRING antes do processamento.

start_position

Sim

BIGINT

Posição onde a substring começa. Consulte as Notas de uso para entender o comportamento nos limites.

length

Não

BIGINT

Quantidade de caracteres a retornar. Se omitido, a função retorna todos os caracteres de start_position até o fim de str.

Notas de uso

Comportamento de start_position

  • Valor positivo: A contagem inicia no começo da string; a posição 1 corresponde ao primeiro caractere.

  • Zero (0):

    • Nas edições de tipo de dados 1,0 e 2,0: retorna uma string vazia.

    • Na Edição de tipos de dados compatível com Hive: inicia a partir do primeiro caractere.

    • No modo compatível com BigQuery (SET odps.sql.bigquery.compatible=true;): inicia a partir do primeiro caractere, comportando-se como 1.

  • Valor negativo: A contagem começa pelo final da string. Por exemplo, -1 refere-se ao último caractere.

    • Caso o valor absoluto exceda o comprimento da string (ou seja, |start_position| > length(str)): o resultado é uma string vazia.

    • No modo compatível com BigQuery: a extração inicia no primeiro caractere em vez de retornar uma string vazia.

Comportamento de length

  • length = 0: resulta em uma string vazia.

  • length < 0: gera uma string vazia. No modo compatível com BigQuery (SETPROJECT odps.sql.bigquery.compatible=true;), um erro é retornado.

Valor de retorno

Retorna um valor STRING.

Gera erro nas seguintes condições:

  • str não for STRING, BIGINT, DECIMAL, DOUBLE ou DATETIME.

  • length não for BIGINT.

Retorna NULL se str, start_position ou length for NULL.

Exemplos

Uso básico

-- Returns 'bc' (starts at position 2, to end of string)
SELECT SUBSTR('abc', 2);

-- Returns 'b' (starts at position 2, length 1)
SELECT SUBSTR('abc', 2, 1);

-- Returns 'bc' (starts 2 characters from the end, length 2)
SELECT SUBSTR('abc', -2, 2);

Entrada NULL

-- Returns NULL
SELECT SUBSTR('abc', null);

Modo compatível com BigQuery

Os exemplos abaixo exigem o modo compatível com BigQuery. Ative-o com SET odps.sql.bigquery.compatible=TRUE; antes de executar cada exemplo.

start_position = 0 é tratado como 1:

SET odps.sql.bigquery.compatible=TRUE;

-- Returns 'apple' (same as start_position = 1)
SELECT SUBSTR('apple', 0);

start_position fora do intervalo (menor que -length) inicia na posição 1:

SET odps.sql.bigquery.compatible=TRUE;

-- Returns 'apple' ('apple' has 5 characters, so -6 is out of range)
SELECT SUBSTR('apple', -6);

Length negativo retorna um erro:

SET odps.sql.bigquery.compatible=TRUE;

-- Returns an error:
-- FAILED: ODPS-0130071:[0,0] Semantic analysis exception - physical plan generation failed:
-- SQL Runtime Unretryable Error: ODPS-0121095:Invalid argument - in function substr/substring,
-- unsupported length value -1
SELECT SUBSTR('apple', 1, -1);

Funções relacionadas

SUBSTR é uma função de string. Para mais informações sobre funções de busca e conversão de strings, consulte Funções de string.