保持缩进的正则表达式(Oracle)

Regular expression to keep indentation (Oracle)

我有这个字符串

'  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

你们知道我该怎么做吗?我正在使用带有 dbms_output.put_line 方法的 Oracle 数据库。

非常感谢

只要第一行的缩进最少,就相当简单了。使用 REGEXP_SUBSTR 提取第一行开头的空格字符串,然后 REGEXP_REPLACE 替换 every 行开头的空格字符串一个空字符串:

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

Demo on dbfiddle