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 |
|
|
Sim |
STRING |
A string source. Valores BIGINT, DECIMAL, DOUBLE e DATETIME são convertidos implicitamente para STRING antes do processamento. |
|
|
Sim |
BIGINT |
Posição onde a substring começa. Consulte as Notas de uso para entender o comportamento nos limites. |
|
|
Não |
BIGINT |
Quantidade de caracteres a retornar. Se omitido, a função retorna todos os caracteres de |
Notas de uso
Comportamento de start_position
Valor positivo: A contagem inicia no começo da string; a posição
1corresponde 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 como1.
-
Valor negativo: A contagem começa pelo final da string. Por exemplo,
-1refere-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:
strnão for STRING, BIGINT, DECIMAL, DOUBLE ou DATETIME.lengthnã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.