sql >> Base de Datos >  >> RDS >> Oracle

Divida la cadena con una nueva línea y agregue una matriz en PL sql Oracle

¿Por qué vuelves a preguntar el nombre de Tom cuando ya lo has saludado?

De todos modos.. Sí. Podría usar la operación de división de cadena estándar en una cadena delimitada por CHR(10) - carácter de nueva línea en Oracle. Luego haz uso de CAST y COLLECT funciones para convertirlo en una matriz. Aquí he usado la colección integrada de Oracle sys.OdciVarchar2List . En su bloque PL/SQL, puede COLECCIONARLO A GRANEL en cualquier tipo de colección adecuado que pueda contener elementos de cadena.

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

Resultados :

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