Regex oracle中的记录过滤

Regex oracle中的记录过滤,regex,oracle,regex-negation,Regex,Oracle,Regex Negation,我在一个表中有一组记录,如 xyz_t abc_y pqr_12-11-2013 psq_1 App_tq2 xyzq_12-10-2014 lpqs_14-09-2012 llyt_23-09-2011 bytx_2 prdtc 我想要输出 pqr_12-11-2013 xyzq_12-10-2014 lpqs_14-09-2012 llyt_23-09-2011 我的意思是只有那些有日期的记录才是后缀 提前谢谢 select s from t where regexp_like(s,

我在一个表中有一组记录,如

xyz_t
abc_y
pqr_12-11-2013
psq_1
App_tq2
xyzq_12-10-2014
lpqs_14-09-2012
llyt_23-09-2011
bytx_2
prdtc
我想要输出

pqr_12-11-2013
xyzq_12-10-2014
lpqs_14-09-2012
llyt_23-09-2011
我的意思是只有那些有日期的记录才是后缀

提前谢谢

select s from t 
where regexp_like(s, '_[[:digit:]]{1,2}-[[:digit:]]{1,2}-[[:digit:]]{4}$');
[:digit://code>-任何数字(您也可以使用
\d

{4}
-四次

{1,2}
-一次或两次


$
字符串的结尾(默认情况下,第一个回车符被解释为结尾)

使用正则表达式:

select your_column_name
from your_table
where REGEXP_LIKE(your_column_name, '.*\d{2}-\d{2}-\d{4}$')

您错过了日期之前的下划线。如果要排除类似于
xxx01-01-2014
的模式,则应在regexp前加上
\u
。否则就没必要了。嗨,谢谢。但在实际程序中,它并没有返回所有带有后缀_date的行。你能再帮我一次吗?@Rubab你能举一个字符串的例子吗,它是missedHi,我明白了。实际上很少有像xyz_12-2-2013或xyz_2-2-2013这样的记录。所以我的意思是,AMT的日期并非到处都是一样的。有些地方是dd-mm-yyyy或d-m-yyyy。你能看看这个吗?谢谢朋友。现在我得到了我真正想要的。谢谢老兄。