我正在尝试基于日期戳在表格中大量删除数据。但是,日期戳被写入表中以及其他东西的加载,并且模式不同,所以我不能使用SUBSTR或任何类似的字符串操作函数,我认为我唯一的选择是使用REGEXP_SUBSTR。不幸的是,我不熟悉REGEXP语法,而且运气不好。
基本上,我的字符串包含以下字符串中的日期:
GKKPACT - 30-MAY-2014:16:39:13
GKKPACT - 30-MAY-2014:16:39:13
GKKPACT - 30-MAY-2014:16:39:13
v_chldcnt - 30-MAY-2014:16:39:26
v_chldcnt - 30-MAY-2014:16:39:26
我只需要从上面的字符串中提取日期,这样我就可以根据sysdate执行删除。
任何想法regexp语法可能是做什么的?我在堆栈溢出(Oracle - extract timestamp from varchar string?)上发现了类似的请求 - 我已经尝试修改此示例中的语法,但没有成功使其工作。
TIA
哈斯基。
答案 0 :(得分:1)
按extract
,您的意思是:
DECLARE
match VARCHAR2(255);
BEGIN
match := REGEXP_SUBSTR(subject, '\d{2}-\w{3}-\d{4}', 1, 1, 'im');
END;
解释正则表达式
\d{2} # digits (0-9) (2 times)
- # '-'
\w{3} # word characters (a-z, A-Z, 0-9, _) (3
# times)
- # '-'
\d{4} # digits (0-9) (4 times)