是否可以使用Oracle中的 REGEXP_REPLACE 函数用子字符串替换多次出现的模式。我试过多个排列&正则表达式的组合,但不知怎的,它没有正常工作。表面上它看起来可行,但不是很确定..任何想法或指针尝试。样本输入/输出
INPUT_STRING = SELECT @DATA:T.ID:ID@, @DATA:T.NAME:NAME@, @DATA:T.ADDRESS:ADDRESS@, @DATA:T.CREATED_DATE:CREATED_DATE@ FROM TABLE_NAME T
OUTPUT_STRING = SELECT T.ID ID, T.NAME NAME, T.ADDRESS ADDRESS FROM TABLE_NAME T
从本质上讲,我们需要在固定模式中实现以下目标
@DATA:xx.yy:zz@, where xx is table, yy is column name, zz column alias
答案 0 :(得分:1)
我想你想要像
这样的东西select regexp_replace(txt,'@DATA:(\w+\.(\w+)):(\2)@', '\1 \2' ) from (
select 'SELECT @DATA:T.ID:ID@, @DATA:T.NAME:NAME@, @DATA:T.ADDRESS:ADDRESS@, @DATA:T.CREATED_DATE:CREATED_DATE@ FROM TABLE_NAME T' as txt
from dual);
答案 1 :(得分:0)
这样的事情:
replace(regexp_replace(str, '^@DATA:|@$'), ':', ' ')
测试:
select str, replace(regexp_replace(str, '^@DATA:|@$'), ':', ' ')
from ( select '@DATA:xx.yy:zz@' as str from dual);