REGEXP_LIKE documentation似乎表明Oracle支持POSIX字符類。當我運行以下兩個查詢時,我期望後者返回前者的子集,因爲[:alpha:]
是[A-Z]
的超集。相反,當使用[:alpha:]
版本時,我沒有得到任何結果。Oracle POSIX支持REGEXP_LIKE
我看到POSIX的支持是在10g中添加,但我們正在運行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].*')
的'*'在結束除了爲正則表達式引擎做更多的工作之外,你的模式不會做任何事情。 – pilcrow
你是說REGEXP_LIKE試圖在字段中查找模式,而不是試圖確定字段是否匹配模式? –
不,我的意思是'。*'在你的正則表達式的結尾意味着「匹配什麼或者什麼都不匹配」,因此沒有用。 '^ ora。*'將與'^ ora'匹配相同的輸入,不多也不少,除了前者會導致正則表達式引擎檢查每個輸入到最後。 – pilcrow