Oracle
 sql >> Base de données >  >> RDS >> Oracle

Fractionner la chaîne avec une nouvelle ligne et ajouter un tableau dans PL sql Oracle

Pourquoi redemandez-vous le nom de Tom alors que vous lui avez déjà dit bonjour ?

Quoi qu'il en soit.. Oui. Vous pouvez utiliser l'opération de division de chaîne standard sur une chaîne délimitée par CHR(10) - caractère de nouvelle ligne dans Oracle. Ensuite, utilisez CAST et COLLECT fonctions pour le convertir en un tableau. Ici, j'ai utilisé la collection intégrée d'Oracle sys.OdciVarchar2List . Dans votre bloc PL/SQL, vous pouvez le COLLECTER EN BULK dans n'importe quel type de collection approprié pouvant contenir des éléments de chaîne.

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

Résultats :

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