Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Split String com nova linha e adicionar array em PL sql Oracle


Por que você pergunta o nome de Tom novamente quando já disse olá para ele?

De qualquer forma .. Sim. Você pode usar a operação de divisão de string padrão na string delimitada por CHR(10) - caractere de nova linha no Oracle. Em seguida, use CAST e COLLECT funções para convertê-lo em uma matriz. Aqui eu usei a coleção interna do Oracle sys.OdciVarchar2List . Em seu bloco PL/SQL você pode COLETÁ-LO EM BULK em qualquer tipo de coleção apropriado que possa conter elementos string.

SQL Fiddle
WITH t (s)
AS (
    SELECT 'Hello Tom
Where are you
What''s your name'
    FROM DUAL
    )
SELECT CAST ( COLLECT ( REGEXP_SUBSTR(s, '[^' || CHR(10)|| ']+', 1, LEVEL) )
                       AS sys.OdciVarchar2List )  as collection
FROM t CONNECT BY LEVEL <= REGEXP_COUNT(s, '[^' || CHR(10)|| ']+')

Resultados :
|                               COLLECTION |
|------------------------------------------|
| Hello Tom,Where are you,What's your name |