- Categorias:
SPLIT_PART¶
Divide uma determinada cadeia em um caractere especificado e retorna a parte solicitada.
Para retornar todos os caracteres após um caractere especificado, você pode usar as funções POSITION e SUBSTR. Para obter um exemplo, consulte Como retornar substrings para cadeias de caracteres de e-mail, telefone e data.
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.
Retornos¶
Esta função retorna um valor do tipo VARCHAR.
Se algum argumento for NULL, NULL será retornado.
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).
Exemplos¶
Este exemplo mostra as partes retornadas por valores partNumber
diferentes.
SELECT column1 part_number_value, column2 portion
FROM VALUES
(0, SPLIT_PART('11.22.33', '.', 0)),
(1, SPLIT_PART('11.22.33', '.', 1)),
(2, SPLIT_PART('11.22.33', '.', 2)),
(3, SPLIT_PART('11.22.33', '.', 3)),
(4, SPLIT_PART('11.22.33', '.', 4)),
(-1, SPLIT_PART('11.22.33', '.', -1)),
(-2, SPLIT_PART('11.22.33', '.', -2)),
(-3, SPLIT_PART('11.22.33', '.', -3)),
(-4, SPLIT_PART('11.22.33', '.', -4));
+-------------------+---------+
| PART_NUMBER_VALUE | PORTION |
|-------------------+---------|
| 0 | 11 |
| 1 | 11 |
| 2 | 22 |
| 3 | 33 |
| 4 | |
| -1 | 33 |
| -2 | 22 |
| -3 | 11 |
| -4 | |
+-------------------+---------+
Este exemplo retorna a primeira e última parte do endereço IP do host local 127.0.0.1
:
SELECT SPLIT_PART('127.0.0.1', '.', 1) AS first_part,
SPLIT_PART('127.0.0.1', '.', -1) AS last_part;
+------------+-----------+
| FIRST_PART | LAST_PART |
|------------+-----------|
| 127 | 1 |
+------------+-----------+
Este exemplo retorna a primeira e a segunda parte de uma cadeia de caracteres separados por barras verticais. O separador é a primeira parte da cadeia de caracteres de entrada, então o primeiro elemento após a divisão é uma cadeia de caracteres vazia.
SELECT SPLIT_PART('|a|b|c|', '|', 1) AS first_part,
SPLIT_PART('|a|b|c|', '|', 2) AS last_part;
+------------+-----------+
| FIRST_PART | LAST_PART |
|------------+-----------|
| | a |
+------------+-----------+
Este exemplo mostra um separador de vários caracteres:
SELECT SPLIT_PART('aaa--bbb-BBB--ccc', '--', 2) AS multi_character_separator;
+---------------------------+
| MULTI_CHARACTER_SEPARATOR |
|---------------------------|
| 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 column1 part_number_value, column2 portion
FROM VALUES
(1, split_part('user@snowflake.com', '', 1)),
(-1, split_part('user@snowflake.com', '', -1)),
(2, split_part('user@snowflake.com', '', 2)),
(-2, split_part('user@snowflake.com', '', -2));
+-------------------+--------------------+
| PART_NUMBER_VALUE | PORTION |
|-------------------+--------------------|
| 1 | user@snowflake.com |
| -1 | user@snowflake.com |
| 2 | |
| -2 | |
+-------------------+--------------------+