Proč se znovu ptáš na Tomovo jméno, když už jsi ho pozdravil?
Každopádně... Ano. Můžete použít standardní operaci rozdělení řetězce na řetězec oddělený CHR(10)
- znak nového řádku v Oracle. Pak použijte CAST
a COLLECT
funkce pro převod na pole. Zde jsem použil vestavěnou kolekci Oracle sys.OdciVarchar2List
. Ve svém bloku PL/SQL jej můžete HROMADNĚ SBÍRAT do jakéhokoli správného typu kolekce, která může obsahovat prvky řetězce.
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)|| ']+')
Výsledky :
| COLLECTION |
|------------------------------------------|
| Hello Tom,Where are you,What's your name |