Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

Função SUBSTRING

Modo de foco
Função SUBSTRING - Amazon Redshift

Retorna o subconjunto de uma string com base na posição inicial especificada da string.

Se a entrada for uma cadeia de caracteres, a posição inicial e o número de caracteres extraídos são baseados nos caracteres, e não bytes, de forma que caracteres multibyte são contados como caracteres simples. Se a entrada for uma expressão binária, a posição inicial e a substring extraída são baseadas em bytes. Você não pode especificar um comprimento negativo, mas pode especificar uma posição inicial negativa.

Sintaxe

SUBSTRING(character_string FROM start_position [ FOR number_characters ] )
SUBSTRING(character_string, start_position, number_characters )
SUBSTRING(binary_expression, start_byte, number_bytes )
SUBSTRING(binary_expression, start_byte )

Argumentos

character_string

A string a ser pesquisada. Tipos de dados não caracteres são tratados como uma string.

start_position

A posição dentro da sequência para começar a extração, começando em 1. A start_position é baseada no número de caracteres, e não bytes, de forma que caracteres multibyte são contados como caracteres simples. Esse número pode ser negativo.

number_characters

O número de caracteres a extrair (o comprimento da substring). O number_characters é baseado no número de caracteres, e não bytes, de forma que caracteres multibyte são contados como caracteres simples. Esse número não pode ser negativo.

binary_expression

O binary_expression do tipo de dados VARBYTE a ser pesquisado.

start_byte

A posição dentro da expressão binária para começar a extração, começando por 1. Esse número pode ser negativo.

number_bytes

O número de bytes a serem extraídos, ou seja, o comprimento da substring. Esse número não pode ser negativo.

Tipo de retorno

VARCHAR ou VARBYTE, de acordo com a entrada.

Observações sobre o uso

Veja a seguir alguns exemplos de como você pode usar start_position e number_characters para extrair substrings de várias posições em uma string.

O seguinte exemplo retorna uma string de quatro caracteres começando com o sexto caractere.

select substring('caterpillar',6,4); substring ----------- pill (1 row)

Se start_position + number_characters exceder o comprimento da string, SUBSTRING retornará uma substring que começa na start_position e vai até o final da string. Por exemplo:

select substring('caterpillar',6,8); substring ----------- pillar (1 row)

Se start_position for negativa ou 0, a função SUBSTRING retornará uma substring começando no primeiro caractere da string com um comprimento de start_position + number_characters -1. Por exemplo:

select substring('caterpillar',-2,6); substring ----------- cat (1 row)

Se start_position + number_characters -1 for menor ou igual a zero, a SUBSTRING retornará uma string vazia. Por exemplo:

select substring('caterpillar',-5,4); substring ----------- (1 row)

Exemplos

O seguinte exemplo retorna o mês da string LISTTIME na tabela LISTING:

select listid, listtime, substring(listtime, 6, 2) as month from listing order by 1, 2, 3 limit 10; listid | listtime | month --------+---------------------+------- 1 | 2008-01-24 06:43:29 | 01 2 | 2008-03-05 12:25:29 | 03 3 | 2008-11-01 07:35:33 | 11 4 | 2008-05-24 01:18:37 | 05 5 | 2008-05-17 02:29:11 | 05 6 | 2008-08-15 02:08:13 | 08 7 | 2008-11-15 09:38:15 | 11 8 | 2008-11-09 05:07:30 | 11 9 | 2008-09-09 08:03:36 | 09 10 | 2008-06-17 09:44:54 | 06 (10 rows)

O seguinte exemplo é o mesmo que o exemplo acima, mas usa a opção FROM...FOR:

select listid, listtime, substring(listtime from 6 for 2) as month from listing order by 1, 2, 3 limit 10; listid | listtime | month --------+---------------------+------- 1 | 2008-01-24 06:43:29 | 01 2 | 2008-03-05 12:25:29 | 03 3 | 2008-11-01 07:35:33 | 11 4 | 2008-05-24 01:18:37 | 05 5 | 2008-05-17 02:29:11 | 05 6 | 2008-08-15 02:08:13 | 08 7 | 2008-11-15 09:38:15 | 11 8 | 2008-11-09 05:07:30 | 11 9 | 2008-09-09 08:03:36 | 09 10 | 2008-06-17 09:44:54 | 06 (10 rows)

Não é possível usar a SUBSTRING para extrair previsivelmente o prefixo de uma string que possa conter caracteres multibyte, pois é necessário especificar o comprimento de uma string multibyte com base no número de bytes, e não no número de caracteres. Para extrair o segmento inicial de uma sequência com base no comprimento em bytes, você pode CAST a string como VARCHAR (byte_length) para truncar a string, onde byte_length é o tamanho exigido. O seguinte exemplo extrai os primeiros cinco bytes da string 'Fourscore and seven'.

select cast('Fourscore and seven' as varchar(5)); varchar ------- Fours

O seguinte exemplo mostra uma posição inicial negativa de um valor binário abc. Como a posição inicial é -3, a substring é extraída do início do valor binário. O resultado é exibido automaticamente como a representação hexadecimal da substring binária.

select substring('abc'::varbyte, -3); substring ----------- 616263

O seguinte exemplo mostra 1 para a posição inicial de um valor binário abc. Como não há tamanho especificado, a string é extraída da posição inicial até o final da string. O resultado é exibido automaticamente como a representação hexadecimal da substring binária.

select substring('abc'::varbyte, 1); substring ----------- 616263

O exemplo a seguir mostra 3 para a posição inicial de um valor binário abc. Como não há tamanho especificado, a string é extraída da posição inicial até o final da string. O resultado é exibido automaticamente como a representação hexadecimal da substring binária.

select substring('abc'::varbyte, 3); substring ----------- 63

O exemplo a seguir mostra 2 para a posição inicial de um valor binário abc. A string é extraída da posição inicial para a posição 10, mas o final da string está na posição 3. O resultado é exibido automaticamente como a representação hexadecimal da substring binária.

select substring('abc'::varbyte, 2, 10); substring ----------- 6263

O exemplo a seguir mostra 2 para a posição inicial de um valor binário abc. A string é extraída da posição inicial por 1 byte. O resultado é exibido automaticamente como a representação hexadecimal da substring binária.

select substring('abc'::varbyte, 2, 1); substring ----------- 62

O exemplo a seguir retorna o nome Ana que aparece após o último espaço na string de entrada Silva, Ana.

select reverse(substring(reverse('Silva, Ana'), 1, position(' ' IN reverse('Silva, Ana')))) reverse ----------- Ana
PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.