sql >> Databasteknik >  >> RDS >> Oracle

Dela sträng med ny rad och lägg till array i PL sql Oracle

Varför frågar du Toms namn igen när du redan har sagt hej till honom?

Hur som helst.. Ja. Du kan använda standardoperationen för strängdelning på sträng avgränsad av CHR(10) - nyradsfigur i Oracle. Använd sedan CAST och COLLECT funktioner för att konvertera den till en array. Här har jag använt Oracles inbyggda samling sys.OdciVarchar2List . I ditt PL/SQL-block kan du BULK SAMLA det till valfri samlingstyp som kan innehålla strängelement.

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

Resultat :

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


  1. Oracle motsvarande SQL Server inkluderade kolumner att indexera

  2. Mysql 5.7.20:Kan inte skapa ett JSON-värde från en sträng med CHARACTER SET 'binary'

  3. Exekveringsprocess för Postgresql-funktioner

  4. Användarinloggningssystem med mySQL-databas med Angular JS?