Categorias:

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

SPLIT

Divide uma determinada cadeia de caracteres com um separador especificado e retorna o resultado em uma matriz de cadeias de caracteres.

Cadeias de caracteres divididas contíguas na cadeia de caracteres de origem, ou a presença de uma cadeia de caracteres dividida no início ou no fim da cadeia de caracteres de origem, resulta em uma cadeia de caracteres vazia na saída. Uma cadeia de caracteres do separação vazia resulta em uma matriz contendo apenas a cadeia de caracteres de origem. Se qualquer um dos parâmetros for um NULL, um NULL é devolvido.

O resultado pode ser usado com funções e construções que operam com dados semiestruturados (por exemplo, FLATTEN e ARRAY_SIZE).

Consulte também:

SPLIT_PART

Sintaxe

SPLIT(<string>, <separator>)
Copy

Argumentos

string

Texto a ser dividido em partes.

separator

Texto a dividir a cadeia de caracteres.

Retornos

O tipo de dados do valor retornado é ARRAY.

Detalhes do agrupamento

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).

Os valores na matriz de saída não incluem uma especificação de agrupamento e, portanto, não oferecem suporte a outras operações de agrupamento.

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');
Copy

Exemplos

Dividir o endereço IP do host local 127.0.0.1 em uma matriz composta por cada uma das quatro partes:

SELECT SPLIT('127.0.0.1', '.');

+-------------------------+
| SPLIT('127.0.0.1', '.') |
|-------------------------|
| [                       |
|   "127",                |
|   "0",                  |
|   "0",                  |
|   "1"                   |
| ]                       |
+-------------------------+
Copy

Dividir uma cadeia de caracteres que contenha linhas verticais como separadores (note que a saída conterá cadeias de caracteres vazias):

SELECT SPLIT('|a||', '|');

+--------------------+
| SPLIT('|A||', '|') |
|--------------------|
| [                  |
|   "",              |
|   "a",             |
|   "",              |
|   ""               |
| ]                  |
+--------------------+
Copy

Use o resultado de SPLIT para gerar vários registros a partir de uma única cadeia de caracteres usando a construção LATERAL FLATTEN. FLATTEN é uma função de tabela que pega uma coluna VARIANT, OBJECT ou ARRAY e produz uma exibição lateral (ou seja, uma exibição em linha que contém correlação referente a outras tabelas que a precedem na cláusula FROM):

SELECT * FROM persons;

------+---------------------+
 NAME |      CHILDREN       |
------+---------------------+
 Mark | Marky,Mark Jr,Maria |
 John | Johnny,Jane         |
------+---------------------+

SELECT name, C.value::string AS childName
FROM persons,
     LATERAL FLATTEN(input=>split(children, ',')) C;

------+-----------+
 NAME | CHILDNAME |
------+-----------+
 John | Johnny    |
 John | Jane      |
 Mark | Marky     |
 Mark | Mark Jr   |
 Mark | Maria     |
------+-----------+
Copy