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].*')
答案 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