sql - 正则表达式到以下字符串

标签 sql oracle plsql

我有一个包含 2 列的表“SomeTableName”:

1) 整个字符串

2)TSP

在“WholeString”列中,我可以获得两种类型的字符串:

1) http://ads.jdtracker.com/?a=10515&c=19163&tsp=2974&s1=39827&s2=&s3=93885&s4=&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}')

最佳答案

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,1,'c',2 位。

关于sql - 正则表达式到以下字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14303867/

相关文章:

php - 根据MySQL表数据减少变量的方法是什么?

oracle - 选择至少两个日期

SQL:按 "business days"分组

java - oracle 10g增加自增自减列

mysql - INSERT '100' into table IF '100' 是最高值给出错误

SQL Server 2008错误

sql - Oracle 中删除和删除清除的区别

mysql - 什么是在数据库中创建图像文档存档的最佳方法?

sql - ORA-01843 : not a valid month When where condition is changed

java - 在 PLSQL Oracle 中抛出特定的错误消息...进入 hibernate 状态?