Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle 11g रेगुलर एक्सप्रेशन द्वारा सभी मिलान की गई घटनाओं को प्राप्त करता है

REGEXP_SUBSTR केवल एक मान देता है। आप अपनी स्ट्रिंग को छद्म तालिका में बदल सकते हैं और फिर मैचों के लिए पूछ सकते हैं। ऐसा करने का एक एक्सएमएल-आधारित तरीका है जो इस समय मुझसे बच जाता है, लेकिन कनेक्ट-बाय कार्यों का उपयोग करते हुए, जब तक आपके पास केवल एक स्रोत स्ट्रिंग हो:

SELECT REGEXP_SUBSTR(str, '[^ ]+', 1, LEVEL) AS substr
FROM (
    SELECT 'Txa233141b Ta233141 Ta233142 Ta233147 Ta233148' AS str FROM DUAL
)
CONNECT BY LEVEL <= LENGTH(REGEXP_REPLACE(str, '[^ ]+')) + 1;

... आपको देता है:

SUBSTR             
--------------------
Txa233141b           
Ta233141             
Ta233142             
Ta233147            
Ta233148            

... और आप इसे अपने मूल पैटर्न के थोड़े सरल संस्करण के साथ फ़िल्टर कर सकते हैं:

SELECT substr
FROM (
    SELECT REGEXP_SUBSTR(str, '[^ ]+', 1, LEVEL) AS substr
    FROM (
        SELECT 'Txa233141b Ta233141 Ta233142 Ta233147 Ta233148' AS str
        FROM DUAL
    )
    CONNECT BY LEVEL <= LENGTH(REGEXP_REPLACE(str, '[^ ]+')) + 1
)
WHERE REGEXP_LIKE(substr, '^[A-Za-z]{2}[0-9]{5,}$');

SUBSTR             
--------------------
Ta233141             
Ta233142             
Ta233147             
Ta233148             

जो बहुत सुंदर नहीं है, लेकिन न तो एक ही क्षेत्र में एकाधिक मान धारण कर रहा है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. WHERE IN क्लॉज में उपयोग करने के लिए Oracle प्रक्रिया में मानों की एक सरणी भेजना

  2. एक वाक्य में अंतिम शब्द:SQL में (नियमित अभिव्यक्ति संभव है?)

  3. ORA-12728:रेगुलर एक्सप्रेशन में अमान्य श्रेणी

  4. Oracle डेटाबेस में Undo और Redo क्या है?

  5. Oracle D2k, Oracle प्रपत्र 10g, Oracle प्रपत्र 6i . में अनुलग्नकों के साथ ईमेल भेजें