Dlaczego ponownie pytasz o imię Toma, skoro już się z nim przywitałeś?
W każdym razie... Tak. Możesz użyć standardowej operacji dzielenia ciągów na ciągach oddzielonych przez CHR(10)
- znak nowej linii w Oracle. Następnie użyj CAST
i COLLECT
funkcje, aby przekonwertować go na tablicę. Tutaj użyłem wbudowanej kolekcji Oracle sys.OdciVarchar2List
. W swoim bloku PL/SQL możesz BULK COLLECT do dowolnego odpowiedniego typu kolekcji, który może przechowywać elementy łańcuchowe.
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)|| ']+')
Wyniki :
| COLLECTION |
|------------------------------------------|
| Hello Tom,Where are you,What's your name |