Categorias:

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

STRTOK_SPLIT_TO_TABLE

Tokeniza uma cadeia de caracteres com o conjunto de delimitadores especificado e nivela os resultados em linhas.

Consulte também:

STRTOK, STRTOK_TO_ARRAY

Sintaxe

STRTOK_SPLIT_TO_TABLE(<string> [,<delimiter_list>])
Copy

Argumentos

Obrigatório:

string

Texto a ser tokenizado.

Opcional:

delimiter_list

Conjunto de delimitadores. Opcional. O valor padrão é um caractere de espaço único.

Retornos

Isso retorna 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

As colunas da tabela original (correlacionada) que foi usada como fonte de dados para esta função também são acessíveis. 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 STRTOK_SPLIT_TO_TABLE.

Exemplos

Aqui está um exemplo simples de entrada constante.

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

Os dois exemplos a seguir utilizam a tabela e os dados criados abaixo:

CREATE OR REPLACE TABLE splittable (v VARCHAR);
INSERT INTO splittable (v) VALUES ('a b'), ('cde'), ('f|g'), ('');
Copy

Este exemplo mostra o uso da função como uma tabela correlacionada:

SELECT * 
    FROM splittable, LATERAL STRTOK_SPLIT_TO_TABLE(splittable.v, ' ')
    ORDER BY SEQ, INDEX;
+-----+-----+-------+-------+
| V   | SEQ | INDEX | VALUE |
|-----+-----+-------+-------|
| a b |   1 |     1 | a     |
| a b |   1 |     2 | b     |
| cde |   2 |     1 | cde   |
| f|g |   3 |     1 | f|g   |
+-----+-----+-------+-------+
Copy

Este exemplo é o mesmo que o anterior, exceto que ele especifica múltiplos delimitadores:

SELECT * 
    FROM splittable, LATERAL STRTOK_SPLIT_TO_TABLE(splittable.v, ' |')
    ORDER BY SEQ, INDEX;
+-----+-----+-------+-------+
| V   | SEQ | INDEX | VALUE |
|-----+-----+-------+-------|
| a b |   1 |     1 | a     |
| a b |   1 |     2 | b     |
| cde |   2 |     1 | cde   |
| f|g |   3 |     1 | f     |
| f|g |   3 |     2 | g     |
+-----+-----+-------+-------+
Copy