- Categorias:
SPLIT_PART¶
Divide uma determinada cadeia em um caractere especificado e retorna a parte solicitada.
Se algum parâmetro for NULL, NULL será retornado.
Dica
Você pode usar o serviço de otimização de pesquisa para melhorar o desempenho de consultas que chamam essa função. Para obter mais detalhes, consulte Serviço de otimização de pesquisa.
- Consulte também:
Sintaxe¶
SPLIT_PART(<string>, <delimiter>, <partNumber>)
Argumentos¶
string
Texto a ser dividido em partes.
delimiter
Texto representando o delimitador para divisão.
partNumber
Parte solicitada da divisão (baseado em 1).
Se o valor for negativo, as peças são contadas de trás para frente a partir do fim da cadeia de caracteres.
Notas de uso¶
Se
partNumber
estiver fora do intervalo, o valor retornado é uma cadeia de caracteres vazia.Se a cadeia de caracteres começar ou terminar com o delimitador, o sistema considera o espaço vazio antes ou depois do delimitador, respectivamente, como uma parte válida do resultado da divisão. Para obter um exemplo, consulte a seção Exemplos abaixo.
Se
partNumber
for 0, ele será tratado como 1. Em outras palavras, ele recebe o primeiro elemento da divisão. Para evitar confusão sobre se os índices são baseados em 1 ou em 0, o Snowflake recomenda evitar o uso de 0 como sinônimo de 1.Se o separador for uma cadeia de caracteres vazia, então após a divisão, o valor retornado é a cadeia de caracteres de entrada (a cadeia de caracteres não é dividida).
Detalhes do agrupamento¶
The collation specifications of all input arguments must be compatible.
Esta função não oferece suporte às seguintes especificações de agrupamento:
pi
(não identifica pontuação).cs-ai
(diferencia maiúsculas e minúsculas, não identifica acentos).
Nota
Para usar esta função com uma coluna que tenha os especificadores de agrupamento upper
ou lower
, você deve ativar o pacote de mudança de comportamento 2024_02 em sua conta.
Para ativar este pacote em sua conta, execute a seguinte instrução:
SELECT SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE('2024_02');
Exemplos¶
Demonstrar as partes retornadas por diferentes valores partNumber
.
select 0, split_part('11.22.33', '.', 0) UNION select 1, split_part('11.22.33', '.', 1) UNION select 2, split_part('11.22.33', '.', 2) UNION select 3, split_part('11.22.33', '.', 3) UNION select 4, split_part('11.22.33', '.', 4) UNION select -1, split_part('11.22.33', '.', -1) UNION select -2, split_part('11.22.33', '.', -2) UNION select -3, split_part('11.22.33', '.', -3) UNION select -4, split_part('11.22.33', '.', -4) ; +----+---------------------------------+ | 0 | SPLIT_PART('11.22.33', '.', 0) | |----+---------------------------------| | 0 | 11 | | 1 | 11 | | 2 | 22 | | 3 | 33 | | 4 | | | -1 | 33 | | -2 | 22 | | -3 | 11 | | -4 | | +----+---------------------------------+
Retornar a primeira e última partes do endereço IP do host local 127.0.0.1
:
SELECT SPLIT_PART('127.0.0.1', '.', 1), SPLIT_PART('127.0.0.1', '.', -1); +---------------------------------+----------------------------------+ | SPLIT_PART('127.0.0.1', '.', 1) | SPLIT_PART('127.0.0.1', '.', -1) | |---------------------------------+----------------------------------| | 127 | 1 | +---------------------------------+----------------------------------+
Retornar a primeira e a segunda partes de uma cadeia de caracteres separados por barras verticais. Observe que o separador é a primeira parte da cadeia de caracteres de entrada, e portanto o primeiro elemento após a divisão é uma cadeia de caracteres vazia.
SELECT SPLIT_PART('|a|b|c|', '|', 1), SPLIT_PART('|a|b|c|', '|', 2); +-------------------------------+-------------------------------+ | SPLIT_PART('|A|B|C|', '|', 1) | SPLIT_PART('|A|B|C|', '|', 2) | |-------------------------------+-------------------------------| | | a | +-------------------------------+-------------------------------+
O exemplo a seguir mostra um separador com vários caracteres:
SELECT SPLIT_PART('aaa--bbb-BBB--ccc', '--', 2); +------------------------------------------+ | SPLIT_PART('AAA--BBB-BBB--CCC', '--', 2) | |------------------------------------------| | bbb-BBB | +------------------------------------------+
O exemplo seguinte mostra que se o separador for uma cadeia de caracteres vazia, então, após a divisão, ainda haverá apenas uma cadeia de caracteres:
select 1, split_part('user@snowflake.com', '', 1) UNION select -1, split_part('user@snowflake.com', '', -1) UNION select 2, split_part('user@snowflake.com', '', 2) UNION select -2, split_part('user@snowflake.com', '', -2); +----+------------------------------------------+ | 1 | SPLIT_PART('USER@SNOWFLAKE.COM', '', 1) | |----+------------------------------------------| | 1 | user@snowflake.com | | -1 | user@snowflake.com | | 2 | | | -2 | | +----+------------------------------------------+