- Categorias:
Funções de cadeia de caracteres e binários (Correspondência/Comparação)
SUBSTR , SUBSTRING¶
Retorna a parte do valor binário ou de cadeia de caracteres de base_expr, começando pelo caractere/byte especificado por start_expr, com comprimento opcionalmente limitado.
Estas funções são sinônimas.
Sintaxe¶
Argumentos¶
base_exprUma expressão que é avaliada como um valor VARCHAR ou BINARY.
start_exprUma expressão que é avaliada como um inteiro. Especifica o offset a partir do qual a subcadeia de caracteres começa. O offset é medido em:
O número de caracteres UTF-8 se a entrada for um valor VARCHAR.
O número de bytes se a entrada for um valor BINARY.
A posição inicial é baseada em 1, não em 0. Por exemplo,
SUBSTR('abc', 1, 1)retornaa, nãob.length_exprUma expressão que é avaliada como um inteiro. Especifica:
O número de caracteres UTF-8 a retornar se a entrada for VARCHAR.
O número de bytes a retornar se a entrada for BINARY.
Especifique um comprimento maior ou igual a zero. Se o comprimento for um número negativo, a função retorna uma cadeia de caracteres vazia.
Retornos¶
O tipo de dados do valor retornado é o mesmo que o tipo de dados do base_expr (VARCHAR ou BINARY).
Se qualquer uma das entradas for NULL, NULL será retornado.
Notas de uso¶
Se
length_exprfor especificado, atélength_exprcaracteres/bytes serão retornados. Selength_exprnão for especificado, todos os caracteres até o final da cadeia de caracteres ou valor binário serão retornados.Os valores em
start_exprcomeçam a partir de 1:Se 0 for especificado, ele será tratado como 1.
Se um valor negativo for especificado, a posição inicial é calculada como os
start_exprcaracteres/bytes a partir do final da cadeia de caracteres ou valor binário. Se a posição estiver fora do intervalo de uma cadeia de caracteres ou valor binário, um valor vazio é devolvido.
Detalhes do agrupamento¶
O agrupamento se aplica às entradas VARCHAR. O agrupamento não se aplica se o tipo de dados de entrada do primeiro parâmetro for BINARY.
No impact. Embora o agrupamento seja aceito sintaticamente, os agrupamentos não afetam o processamento. Por exemplo, letras de dois e três caracteres em idiomas (por exemplo, «dzs» em húngaro ou «ch» em tcheco) ainda são contadas como dois ou três caracteres (não um caractere) para o argumento de comprimento.
The collation of the result is the same as the collation of the input. Isso pode ser útil se o valor retornado for passado para outra função como parte de chamadas de funções aninhadas.
Exemplos¶
Os exemplos a seguir usam a função SUBSTR.
Exemplo básico¶
O exemplo a seguir usa a função SUBSTR para retornar a parte da cadeia de caracteres que começa no nono caractere e limita o comprimento do valor retornado a três caracteres:
Especificação de diferentes valores de início e comprimento¶
O exemplo a seguir mostra as substrings retornadas para a mesma base_expr quando valores diferentes são especificados para start_expr e length_expr:
Como retornar substrings para cadeias de caracteres de e-mail, telefone e data¶
Os exemplos a seguir retornam substrings para informações do cliente em uma tabela.
Crie a tabela e insira os dados:
Use a função POSITION com a função SUBSTR para extrair os domínios dos endereços de e-mail. Este exemplo encontra a posição de @ em cada cadeia de caracteres e começa a partir do próximo caractere adicionando um:
Dica
É possível usar a função POSITION para encontrar a posição de outros caracteres, como um caractere vazio (' ') ou um sublinhado (_).
Na coluna cust_phone da tabela, o código de área são sempre os três primeiros caracteres. Extraia o código de área dos números de telefone:
Remova o código de área dos números de telefone:
Na coluna activation_date da tabela, a data está sempre no formato YYYYMMDD. Extraia o ano, mês e dia destas cadeias de caracteres: