Регулярное выражение для сохранения отступа (Oracle) - PullRequest
0 голосов
/ 04 апреля 2020

У меня есть эта строка

'  select t1.*, t2.*
   from table1 t1
     join table t2
       on t1.id=t2.id_fk
'

Я хочу напечатать ее без пробелов, но с отступом.

select t1.*, t2.*
from table1 t1
  join table t2
    on t1.id=t2.id_fk

Знаете ли вы, ребята, как я могу это сделать? Я использую Oracle базу данных с методом dbms_output.put_line.

Большое спасибо

1 Ответ

3 голосов
/ 04 апреля 2020

Пока первая строка имеет минимальный отступ, это достаточно просто. Используйте REGEXP_SUBSTR, чтобы извлечь строку пробелов в начале первой строки, а затем REGEXP_REPLACE, чтобы заменить эту строку пробелов в начале каждой строки пустой строкой:

SELECT REGEXP_REPLACE(s, '^' || REGEXP_SUBSTR(s, '^\s+'), '', 1, 0, 'm')
FROM data

Выход:

select t1.*, t2.*
from table1 t1
  join table t2
    on t1.id=t2.id_fk

Демонстрация на dbfiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...