Categorias:

Funções de cadeia de caracteres e binários (General)

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

SPLIT

Sintaxe

SPLIT_PART(<string>, <delimiter>, <partNumber>)
Copy

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

Arguments with collation specifications are currently not supported.

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 |                                 |
+----+---------------------------------+
Copy

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                                |
+---------------------------------+----------------------------------+
Copy

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                             |
+-------------------------------+-------------------------------+
Copy

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                                  |
+------------------------------------------+
Copy

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 |                                          |
+----+------------------------------------------+
Copy