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

регулярен израз за различни дълги думи, разделени на редове

Това е заради обичайния ви израз. Променете го, за да търсите само последователни азбучни знаци:

 select regexp_substr('abc
 def
 ghi', '[[:alpha:]]+', 1 ,level)
   from dual
connect by regexp_substr('abc
def
ghi', '[[:alpha:]]+', 1 ,level) is not null

Работи и за единични знаци:

select regexp_substr('a
b
c', '[[:alpha:]]+', 1 ,level)
from dual
     connect by regexp_substr('a
b
c', '[[:alpha:]]+', 1 ,level) is not null;

Вие коментирахте:

Моля, винаги поставяйте цялата информация във въпроса като начало, моля.

Изглежда търсите да разделите знак за нов ред (връщане на каретка или връщане на каретка/подаване на ред)

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

with the_data as ( 
select 'a
b
c' as dat
  from dual
       )
 select regexp_substr(dat, '[^[:cntrl:]]+', 1 ,level)
  from the_data
connect by regexp_substr(dat, '[^[:cntrl:]]+', 1 ,level) is not null;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Initcap пропуска думи, по-малки от 4 знака

  2. Oracle sql агрегатна функция със стойности по подразбиране

  3. Проблеми при създаване на тригер с помощта на Oracle

  4. Как да форматирате дати в Oracle

  5. Oracle:Таблица на дяловете по месеци