Oracle POSIX支持REGEXP_LIKE

时间:2014-06-05 14:03:30

标签: oracle posix

REGEXP_LIKE documentation似乎表明Oracle支持POSIX字符类。当我运行以下两个查询时,我希望后者返回前者的子集,因为[:alpha:][A-Z]的超集。相反,使用[:alpha:]版本时,我得不到任何结果。

我看到在10g中添加了POSIX支持,但我们正在运行11g版本2.

查询1:

SELECT DISTINCT offer_id FROM fop WHERE REGEXP_LIKE (offer_id, '^01[:alpha:].*');

查询2:

SELECT DISTINCT offer_id FROM fop WHERE REGEXP_LIKE (offer_id, '^01[A-Z].*')

2 个答案:

答案 0 :(得分:3)

您必须为这种字符集使用双方括号:

SELECT DISTINCT offer_id FROM fop WHERE REGEXP_LIKE (fop.offer_id, '^01[[:alpha:]].*');

答案 1 :(得分:3)

在posix正则表达式的其他用法中,[:alpha:]是一个单独的“标记”,仍然需要在char类括号内,所以试试

 SELECT DISTINCT offer_id FROM fop 
 WHERE REGEXP_LIKE (fop.offer_id, '^01[[:alpha:]].*');

IHTH