Hvorfor spørger du om Toms navn igen, når du allerede har sagt hej til ham?
Anyways.. Ja. Du kan bruge standard strengopdelingsoperationen på streng afgrænset af CHR(10)
- nylinjekarakter i Oracle. Brug derefter CAST
og COLLECT
funktioner til at konvertere det til et array. Her har jeg brugt Oracles indbyggede samling sys.OdciVarchar2List
. I din PL/SQL-blok kan du BULK SAMLE den til en hvilken som helst passende samlingstype, der kan indeholde strengelementer.
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)|| ']+')
| COLLECTION |
|------------------------------------------|
| Hello Tom,Where are you,What's your name |