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.

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:

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.

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));
Copy
+-------------------+---------+
| 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;
Copy
+------------+-----------+
| 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;
Copy
+------------+-----------+
| 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;
Copy
+---------------------------+
| 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));
Copy
+-------------------+--------------------+
| PART_NUMBER_VALUE | PORTION            |
|-------------------+--------------------|
|                 1 | user@snowflake.com |
|                -1 | user@snowflake.com |
|                 2 |                    |
|                -2 |                    |
+-------------------+--------------------+