sql >> Databáze >  >> RDS >> Oracle

Rozdělit řetězec s novým řádkem a přidat pole v PL sql Oracle

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.

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

Výsledky :

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


  1. Jak zálohovat a obnovit databázi MySQL?

  2. Heroku Review Apps:zkopírujte DB do aplikace recenze

  3. Jak zrychlit hromadné vkládání na MS SQL Server pomocí pyodbc

  4. Může php dotazovat výsledky z předchozího dotazu?