请假设您在VARCHAR2
:
UPDATE PLUTO SET FIELD1='',FIELD2='',FIELD3='TIGER',FIELD4='',FIELD5='SCOTT';
我想编写一个简化前一个语句的正则表达式,将所有更新设置删除为NULL,因为它们没用(NULL是默认语句),如下所示:
UPDATE PLUTO SET FIELD3='TIGER', FIELD5='SCOTT';
你能帮帮我吗?
我对正则表达式从来没有这么好...... !!
答案 0 :(得分:2)
SELECT
REGEXP_REPLACE(
REGEXP_REPLACE(
'UPDATE PLUTO SET FIELD1='''',FIELD2='''',FIELD3=''TIGER'',FIELD4='''',FIELD5=''SCOTT'',FIELD9='''';',
'(FIELD[0-9]+=(?'''',*))','') ,
'[, ]+;',';')
from dual
这是怎么回事?它将删除所有FIELD#=''(有或没有最终)
这是一个正则表达式备忘单: http://psoug.org/snippet.htm/Regular_Expressions_Regex_Cheat_Sheet_856.htm?PHPSESSID=7238be874ab99d0731a9da64f2dbafd8 和Oracle正则表达式的良好资源 http://psoug.org/snippet/Regular-Expressions---REGEXP_REPLACE_882.htm
答案 1 :(得分:1)
我相信这应该能得到你想要的东西,但是可能有更好的方法,因为我不是最好的正则表达式:
regexp_replace(regexp_replace(field, 'FIELD[0-9]+=''''[,]*', ''), '[, ]+;', ';')