Pular para o conteúdo

Brincando com STRINGs em tabelas: Maneiras eficientes de separação e organização

Brincando com STRINGs

Olá pessoal !

Hoje eu venho até vocês para demonstrar alguns procedimentos que podem ser feitos com STRINGs, em especial transformá-los em tabelas ! 🙂

Imagine que você tenha a seguinte String: ‘A’, ‘B’ e ‘C’ e gostaria de transformá-las em colunas. Existem várias maneiras de se fazer isso:

SELECT * FROM TABLE(STRINGS('A', 'B', 'C'))
/

COLUMN_VALUE
-----------------------
A
B
C
SELECT * FROM TABLE(sys.dbms_debug_vc2coll('A', 'B', 'C'))
/

COLUMN_VALUE
-----------------------
A
B
C
SELECT * FROM TABLE(sys.odcivarchar2list('A', 'B', 'C'))
/

COLUMN_VALUE
-----------------------
A
B
C

Todos são TYPES do tipo TABLE de VARCHAR2.

3 maneiras diferentes de se chegar ao mesmo resultado. Qual a mais performática ? Faça o seu teste !!! 🙂

Agora imagine que você receba o dado da seguinte maneira ‘190,191,192,193’. As abordagens acima não funcionariam !

Que tal se fazermos assim ?

SELECT REPLACE(REGEXP_SUBSTR(x.c1, '([[:alnum:]]*)(,|$)', 1, ROWNUM), ',') c2
FROM (
SELECT '190,191,192,193' c1
FROM   dual
) x
CONNECT BY LEVEL <= LENGTH(REGEXP_REPLACE(x.c1, '[^,]')) + 1
/

C2
---
190
191
192
193

Com o uso de expressão regular, fica fácil separar pelo caracter ‘,’.

É isso aí pessoal ! Espero que essa simples brincadeira com STRINGs possa ser útil a vocês. Aproveitem essas idéias e “pensem fora da caixa” !

Abraço

Quão útil foi este post ?

Clique em uma estrela para classificar o post

nota média 5 / 5. Contagem de votos: 24

Sem votos ! Seja o primeiro a classificar !

2 comentários em “Brincando com STRINGs em tabelas: Maneiras eficientes de separação e organização”

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

plugins premium WordPress