保持缩进的正则表达式(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
我有这个字符串
' 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