Oracle
 sql >> база данни >  >> RDS >> Oracle

Разделете низ с нов ред и добавете в масив в PL sql Oracle

Защо питате името на Том отново, когато вече сте го поздравили?

Както и да е.. Да. Можете да използвате стандартната операция за разделяне на низ върху низ, разделен от CHR(10) - знак за нов ред в Oracle. След това използвайте CAST и COLLECT функции, за да го конвертирате в масив. Тук използвах вградената колекция на Oracle sys.OdciVarchar2List . Във вашия PL/SQL блок можете да го СЪБИРАТЕ ГРУПО във всеки правилен тип колекция, който може да съдържа елементи от низ.

SQL Fiddle

WITH t (s)AS ( SELECT 'Hello TomWhere are youWhat's your name' FROM DUAL )SELECT CAST ( COLLECT ( REGEXP_SUBSTR(s, '[^' || CHR(10)|| ' ]+', 1, LEVEL) ) AS sys.OdciVarchar2List ) като колекцияFROM t CONNECT BY LEVEL <=REGEXP_COUNT(s, '[^' || CHR(10)|| ']+') 

Резултати :

<предварителен код>| СЪБИРАНЕ ||------------------------------------------|| Здравей Том, къде си, как се казваш |

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Съпоставяне на потребителски тип на Oracle UDT за не е посочено или е невалидно

  2. В Oracle полезно ли е стартирането на клаузата WHERE на SQL Query с 1=1?

  3. Как да заобиколите нарушение на уникално ограничение?

  4. SQL Dev 4.2 Топ SQL

  5. Защо Oracle не ви казва КОЯ таблица или изглед не съществува?