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

Преобразуване на ограничен низ в редове в oracle

Отстраняване на този метод за разделяне на низ, като се допускат нулеви стойности:

select regexp_substr('A~^B~^C~D^E','(.*?)(~\^|$)', 1, level, null, 1) from dual
connect by level < regexp_count('A~^B~^C~D^E','(.*?)(~\^|$)');

REGEXP_SUBS
-----------
A
B
C~D^E

Както в свързания отговор, той търси всякакви знаци, без алчност, последвано от комбинацията от ~^ (с избягала карета, така че ~\^ ) или край на реда. regexp_substr() calls също използва незадължителните аргументи, за да укаже subexpr - така че получава само първото групиране (.*? ), а не самият разделител, който е във втората група.

Ако искате конкретен елемент, това е още по-близо до свързаната публикация:

select regexp_substr('A~^B~^C~D^E','(.*?)(~\^|$)', 1, 3, null, 1) from dual;

REGEX
-----
C~D^E

Или докато правите това в процедура, използвайте заявката за свързване, за да попълните колекция и след това изберете елемента, от който се нуждаете, ако ще разглеждате повече от един.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да преместите файл от една директория в друга с помощта на PL SQL

  2. TEMPFILE Офлайн физическа готовност

  3. Как да добавите сървъра за управление в R12.2

  4. Алтернатива, независима от версията на Oracle ODP.NET

  5. как да направя функция за връщане на тип ред от таблица в pl/sql?