Как я могу упростить это утверждение с помощью регулярных выражений? - PullRequest
1 голос
/ 03 ноября 2010

Предположим, у вас есть следующий оператор, сохраненный в VARCHAR2:

UPDATE PLUTO SET FIELD1='',FIELD2='',FIELD3='TIGER',FIELD4='',FIELD5='SCOTT';

Я хотел бы написать регулярное выражение, которое упрощает предыдущий оператор, удаляя все настройки обновления для NULL, потому чтоони бесполезны (NULL - оператор по умолчанию), а именно:

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

Не могли бы вы мне помочь?

Я никогда не был так хорош с регулярными выражениями ... !!

Ответы [ 2 ]

2 голосов
/ 03 ноября 2010
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 Regular Expression http://psoug.org/snippet/Regular-Expressions---REGEXP_REPLACE_882.htm

1 голос
/ 03 ноября 2010

Я полагаю, что это должно дать вам то, что вы хотите, но может быть и лучший способ, так как я тоже не лучший с регулярным выражением:

regexp_replace(regexp_replace(field, 'FIELD[0-9]+=''''[,]*', ''), '[, ]+;', ';')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...