Categorias:

Funções de cadeia de caracteres e binários (Geral) , Funções de tabela

SPLIT_TO_TABLE

Esta função de tabela divide uma cadeia de caracteres (baseado em um delimitador especificado) e nivela os resultados em linhas.

Consulte também:

SPLIT

Sintaxe

SPLIT_TO_TABLE(<string>, <delimiter>)
Copy

Argumentos

string

Texto a ser dividido.

delimiter

Texto a dividir a cadeia de caracteres.

Retornos

O valor retornado é uma tabela.

As linhas devolvidas consistem em um conjunto fixo de colunas:

+-----+-------+-------+
| SEQ | INDEX | VALUE |
|-----+-------+-------|
Copy
SEQ:

Um número sequencial único associado ao registro de entrada; não é garantido que a sequência esteja livre de lacunas ou seja ordenada de qualquer forma específica.

INDEX:

O índice do elemento. Baseado em um.

VALUE:

O valor do elemento da matriz nivelada.

Nota

A consulta também pode acessar as colunas da tabela original (correlacionada) que serviram como fonte de dados para esta função. Se uma única linha da tabela original resultar em várias linhas na exibição nivelada, os valores nesta linha de entrada serão replicados para corresponder ao número de linhas produzidas por SPLIT_TO_TABLE.

Exemplos

Aqui está um exemplo simples de entrada constante.

SELECT table1.value 
    FROM table(split_to_table('a.b', '.')) AS table1
    ORDER BY table1.value;
+-------+
| VALUE |
|-------|
| a     |
| b     |
+-------+
Copy

O exemplo a seguir utiliza a tabela e os dados criados abaixo:

CREATE OR REPLACE TABLE splittable (v VARCHAR);
INSERT INTO splittable (v) VALUES ('a.b.c'), ('d'), ('');
Copy

Esta consulta mostra o uso da função como uma tabela correlacionada:

SELECT * 
    FROM splittable, LATERAL SPLIT_TO_TABLE(splittable.v, '.')
    ORDER BY SEQ, INDEX;
+-------+-----+-------+-------+
| V     | SEQ | INDEX | VALUE |
|-------+-----+-------+-------|
| a.b.c |   1 |     1 | a     |
| a.b.c |   1 |     2 | b     |
| a.b.c |   1 |     3 | c     |
| d     |   2 |     1 | d     |
|       |   3 |     1 |       |
+-------+-----+-------+-------+
Copy