ऐसा इसलिए है क्योंकि Oracle केवल POSIX रेगुलर एक्सप्रेशन मानक का समर्थन करता है, न कि पर्ल सिंटैक्स का जो आप अपने पहले उदाहरण में उपयोग करते हैं।
Oracle डॉक्स:http://docs.oracle। com/cd/B19306_01/appdev.102/b14251/adfns_regexp.htm#CHDJGBGG पॉज़िक्स रेगेक्स स्टैंडर्ड:http://pubs.opengroup.org/onlinepubs/007908799 /xbd/re.html
संपादित करें:जैसा Alex Poole ओरेकल 10gR2 के बाद से ओरेकल वास्तव में पर्ल रेगेक्स सिंटैक्स का समर्थन करता है। मेरे स्थानीय 11gR2 इंस्टाल पर अपना उदाहरण आज़माने से पता चलता है कि आपका सिंटैक्स गलत है, निम्नलिखित ठीक काम करता है:
SELECT 1 FROM dual WHERE regexp_like('040', '^\d{3}$');