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

Oracle का उपयोग करते हुए सबस्ट्रिंग जब कई मैच होते हैं?

आप REGEXP_SUBSTR . के संयोजन का उपयोग कर सकते हैं और REGEXP_COUNT अपने प्रश्न का समाधान करने के लिए:

WITH test_data(input) AS
(
  SELECT  '1.CABLE : THERMINAL 3X2X0.25MM FPCP PLUS UNITRONIC S9C000019651' FROM DUAL UNION ALL 
  SELECT  '2.Motor Protection Relay EMR-3MPO-2S9CB1-1 (was IQ1000II / MP 3000)' FROM DUAL UNION ALL
  SELECT  '3.GREASE : BEM 41-132 3KG CARTRIDGE KLUBERPLEX S9C00019171 (Order by KG''s required)' FROM DUAL UNION ALL
  SELECT  '4.DO NOT USE CARRIER SPIDEX ZK 38 98 SH. S9C00011593 (SUPERSEDE BY S9C10204555 - WIN0020775)' FROM DUAL
)
SELECT regexp_substr(td.input, 
                     'S9C[0-9]{8}( |$)', 
                     1, 
                     GREATEST(1, regexp_count(td.input, 'S9C[0-9]{8}( |$)')))
FROM test_data td

यह कैसे काम करता है इसकी एक त्वरित व्याख्या यहां दी गई है:

  1. REGEXP_COUNT लक्ष्य पैटर्न की घटनाओं की गणना करता है, इसलिए हम बाद में अंतिम घटना प्राप्त कर सकते हैं।
  2. परिणाम को GREATEST में रैप करें क्योंकि 0 REGEXP_SUBSTR . के लिए अमान्य है पैरामीटर।
  3. कॉल करें REGEXP_SUBSTR लक्ष्य स्ट्रिंग की अंतिम घटना को हथियाने के लिए।

आपको यह दिखाने के लिए एक DBFiddle है कि यह काम कर रहा है (DBFiddle )




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle क्लाउड और ऑटोनॉमस डेटाबेस पर निःशुल्क प्रमाणन परीक्षा की नई तिथियां

  2. इंस्टेंस पूल और टेराफॉर्म का उपयोग करके कई Oracle कंप्यूट इंस्टेंस को तैनात करें

  3. NHibernate - कॉन्फ़िगरेशन में (ओरेकल) बोली नहीं ढूंढ सका

  4. Oracle:'=कोई ()' बनाम 'IN ()'

  5. केस स्टेटमेंट के साथ ट्रिगर बनाना