如何使用正则表达式简化此语句?

时间:2010-11-03 16:49:08

标签: regex oracle plsql

请假设您在VARCHAR2

中存储了以下声明
UPDATE PLUTO SET FIELD1='',FIELD2='',FIELD3='TIGER',FIELD4='',FIELD5='SCOTT';

我想编写一个简化前一个语句的正则表达式,将所有更新设置删除为NULL,因为它们没用(NULL是默认语句),如下所示:

UPDATE PLUTO SET FIELD3='TIGER', FIELD5='SCOTT';

你能帮帮我吗?

我对正则表达式从来没有这么好...... !!

2 个答案:

答案 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]+=''''[,]*', ''), '[, ]+;', ';')
相关问题