regexp_substr इस तरह काम करता है:
<ब्लॉकक्वॉट>यदि घटना 1 से अधिक है, तो डेटाबेस पैटर्न की पहली घटना के बाद पहले वर्ण से शुरू होने वाली दूसरी घटना की खोज करता है , इत्यादि। यह व्यवहार SUBSTR फ़ंक्शन से भिन्न है, जो पहली घटना के दूसरे वर्ण पर दूसरी घटना की खोज शुरू करता है।
तो पैटर्न [^|] गैर-पाइप की तलाश करेगा, जिसका अर्थ है कि यह लगातार पाइपों ("||") को छोड़ देगा जो एक गैर-पाइप चार की तलाश में है।
आप कोशिश कर सकते हैं:
select trim(regexp_substr(replace('A|test||string', '|', '| '), '[^|]+', 1, 4)) from dual;
यह एक "|" को प्रतिस्थापित करेगा एक "| " के साथ और आपको पैटर्न के आधार पर मिलान करने की अनुमति देता है [^|]