आप 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
यह कैसे काम करता है इसकी एक त्वरित व्याख्या यहां दी गई है:
REGEXP_COUNT
लक्ष्य पैटर्न की घटनाओं की गणना करता है, इसलिए हम बाद में अंतिम घटना प्राप्त कर सकते हैं।- परिणाम को
GREATEST
में रैप करें क्योंकि 0REGEXP_SUBSTR
. के लिए अमान्य है पैरामीटर। - कॉल करें
REGEXP_SUBSTR
लक्ष्य स्ट्रिंग की अंतिम घटना को हथियाने के लिए।
आपको यह दिखाने के लिए एक DBFiddle है कि यह काम कर रहा है (DBFiddle )