使用REGEXP_REPLACE替换ORACLE中的句子

时间:2018-03-06 16:47:19

标签: sql oracle regexp-replace

我想在我的字符串中删除以下模式的所有出现。

function my(){document.getElementById("question1").innerHTML="THIS QUESTION"+
"</br>"
+"<button onclick=answer1() id=ques1 >first answ</button>"
+"<button onclick=answer2() id=ques2 >sec answer </button>";
document.getElementById("go").innerHTML="";
}

如何为此创建正则表达式?

基本上,我不想要任何SUPPLEMENTAL LOG GROUP语句。这是由dbms_metadata.get_ddl生成的。

2 个答案:

答案 0 :(得分:1)

您可以使用:

WITH cte(R) as (select 
'CREATE TABLE TAB (X int)
--- something
SUPPLEMENTAL LOG GROUP "SAMPLESL" ("PIKEY") ALWAYS, 
SUPPLEMENTAL LOG GROUP "SAMPLE2" ("UIKEY") ALWAYS, 
--else
'
  FROM DUAL
)
select R, regexp_replace(R, 'SUPPLEMENTAL LOG GROUP.*', '')
from CTE;

<强> DBFiddle Demo

答案 1 :(得分:0)

在运行DBMS_METADATA.SET_TRANSFORM_PARAM之前,您还可以使用CONSTRAINTSDBMS_METADATA.GET_DDL(包括SUPPLEMENTAL LOG GROUP)设置为false。但问题是,这也将禁用所有其他非引用表约束的显示。我觉得Oracle应该将SUPPLEMENTAL LOG GROUP作为单独的转换 参数

EXEC DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,
'CONSTRAINTS',
       FALSE);


select DBMS_METADATA.GET_DDL('TABLE','YOURTABLE','YOURSCHEMA') ddl from dual;

有关更多选项,请参阅SET_TRANSFORM_PARAM