2

2列のテーブル「SomeTableName」があります。

1)WholeString

2)TSP

「WholeString」列では、2種類の文字列を取得できます。

1)http://ads.jdtracker.com/?a=10515&c=19163&tsp=2974&s1=39827&s23%s3=93885&s43%s5=

2)TSP_2974_CTV_18933_HotGamesOnYourMobile

「WholeString」から「TSP」列を埋めるためのトリガーを作成する必要があります

「2974」-TSP列に入力する必要のある値です。

私の試み:

CREATE OR REPLACE TRIGGER SomeTriggerName
  BEFORE INSERT OR UPDATE ON SomeTableName
  FOR EACH ROW

IF substr(WholeString, 1, [7]) = N'http://'
    NEW.TSP:=REGEXP_SUBSTR(WholeString, 'SomeRegexp')
IF substr(WholeString, 1, [4]) = N'TSP_'
    NEW.TSP:=REGEXP_SUBSTR(WholeString, '(?<=(tsp=|TSP_))\d{4}')
4

2 に答える 2

2
CREATE OR REPLACE TRIGGER sometriggername
  BEFORE INSERT OR UPDATE ON sometablename FOR EACH ROW 
BEGIN
  :new.tsp := regexp_substr(:new.wholestring, '(tsp=|TSP_)(\d+)',1,1,'c',2);
END sometriggername;

tsp=正規表現は、またはのいずれかを検索しTSP_、その後に1つ以上の数字が続きます。そして、2番目の括弧のセットの数字だけを報告したいので、1,1,'c',2ビットです。

于 2013-01-13T14:17:41.323 に答える
1

ここでテスト済みhttp://blog.logiclabz.com/tools/online-regex-checker.aspx

(?<=(tsp=|TSP_))\d{4}
于 2013-01-13T13:39:11.903 に答える