sql >> Database >  >> RDS >> Oracle

String splitsen met nieuwe regel en array toevoegen in PL sql Oracle

Waarom vraag je Toms naam nog een keer als je hem al gedag hebt gezegd?

Hoe dan ook.. Ja. U kunt de standaard bewerking voor het splitsen van tekenreeksen gebruiken voor tekenreeksen die worden gescheiden door CHR(10) - nieuwregelkarakter in Oracle. Maak dan gebruik van CAST en COLLECT functies om het naar een array te converteren. Hier heb ik Oracle's ingebouwde verzameling sys.OdciVarchar2List gebruikt . In uw PL/SQL-blok kunt u het in BULK VERZAMELEN in elk geschikt verzamelingstype dat string-elementen kan bevatten.

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

Resultaten :

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


  1. Tupels gebruiken in de ORACLE IN-clausule en een voorwaarde voor één element in de tuple

  2. Genereer serienummer in mysql-query

  3. Een tabblad specificeren in een postgres front-end KOPIE

  4. SQL Server 2016:een databasegebruiker maken