Posts Tagged ‘regexp_substr’
Разбить строку на строчки по 100 символов, не разбивая слова
2 апреля, 2010
Оставьте комментарий
with t as ( select 'есть длинная строка - которую нужно разбить на строчки по сто символов.' || 'Но слова разбивать нельзя, переносить нужно по ' ||rpad('qwerty',110,'o')||'абвгд' as s from dual ) select trim(regexp_substr(s,'(.{0,99}(\s|$))|[^[:space:]]{100}',1,level)) from t CONNECT BY regexp_substr(s,'(.{0,99}(\s|$))|[^[:space:]]{100}',1,level) is not null;
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 Connected as apps SQL> with t as ( 2 select 'есть длинная строка - которую нужно разбить на строчки по сто символов.' 3 || 'Но слова разбивать нельзя, переносить нужно по ' 4 ||rpad('qwerty',110,'o')||'абвгд' as s from dual 5 ) 6 select trim(regexp_substr(s,'(.{0,99}(\s|$))|[^[:space:]]{100}',1,level)) as str 7 from t 8 CONNECT BY 9 regexp_substr(s,'(.{0,99}(\s|$))|[^[:space:]]{100}',1,level) is not null; STR -------------------------------------------------------------------------------- есть длинная строка - которую нужно разбить на строчки по сто символов.Но слова переносить нужно по qwertyoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo ooooooooooабвгд
Рубрики:SQL
Регулярные выражения, regexp_substr, SQL
Регулярные выражения
31 марта, 2010
Оставьте комментарий
Регулярные выражения произошли из теорий автоматов и формальных языков, поэтому поначалу производят устрашающее впечатление. Однако, их базовые понятия являются простыми и в то же время мощными.
Шаблон регулярных выражений выражается в виде строки, содержащей следующие конструкции:
- Литеральные символы. Фактические символы, которые следует искать (Например, шаблон xyz соответствует только вхождению «xyz»)
- Метасимволы. Операции, определяющие алгоритмы, которые должны применяться во время поиска (Например, шаблон ^xyz соответсвует только строке, начинающейся с «xyz» — другие вхождения не учитываются)
Рубрики:SQL
Регулярные выражения, REGEXP_INSTR, REGEXP_LIKE, REGEXP_REPLACE, regexp_substr, SQL
Извлечь подстроки используя разделители
17 марта, 2010
Оставьте комментарий
SELECT regexp_substr(str, '[^;]+', 1, level) str FROM ( SELECT ' 1; 2; test1.' str FROM dual ) t CONNECT BY instr(str, ';', 1, level - 1) > 0
Пример вывода данных:
STR ------------- 1 2 test1.
Более сложный пример…
Рубрики:SQL
CONNECT BY, строка, regexp_substr, SQL