Oracle
 sql >> Database >  >> RDS >> Oracle

Dividi String con una nuova riga e aggiungi un array in PL sql Oracle

Perché chiedi di nuovo il nome di Tom quando l'hai già salutato?

Comunque.. Sì. È possibile utilizzare l'operazione di divisione della stringa standard su una stringa delimitata da CHR(10) - carattere di nuova riga in Oracle. Quindi usa CAST e COLLECT funzioni per convertirlo in un array. Qui ho usato la raccolta integrata di Oracle sys.OdciVarchar2List . Nel tuo blocco PL/SQL puoi COLLEGARLO BULK in qualsiasi tipo di raccolta appropriato che possa contenere elementi stringa.

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)|| ']+')

Risultati :

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