यदि आप इन सभी को पंक्ति . में एक स्ट्रिंग के रूप में चाहते हैं उन्हें नियमित अभिव्यक्तियों का उपयोग करने की कोई आवश्यकता नहीं है आप एक मानक REPLACE()
:
SQL> select replace('2711393|2711441|1234567', '|', ', ') from dual;
REPLACE('2711393|2711441|
-------------------------
2711393, 2711441, 1234567
यदि आप इन सभी को एक ही कॉलम में चाहते हैं तो आपको CONNECT BY
जैसा कि मैं प्रदर्शित करता हूं यहां
. कृपया ध्यान दें कि यह अत्यधिक अक्षम है।
SQL> select regexp_substr('2711393|2711441|1234567', '[^|]+', 1, level)
2 from dual
3 connect by regexp_substr('2711393|2711441|1234567'
4 , '[^|]+', 1, level) is not null;
REGEXP_SUBSTR('2711393|2711441|1234567','[^|]+',1,LEVEL)
--------------------------------------------------------------------------
2711393
2711441
1234567
SQL>
अगर आप इन्हें अलग-अलग कॉलम में चाहते हैं तो आपको का इस्तेमाल करना होगा। PIVOT
और आपको यह जानना होगा कि आपके पास कितने हैं। मैं मान रहा हूँ 3.
SQL> select *
2 from (
3 select regexp_substr('2711393|2711441|1234567', '[^|]+', 1, level) as a
4 , level as lvl
5 from dual
6 connect by regexp_substr('2711393|2711441|1234567'
7 , '[^|]+', 1, level) is not null
8 )
9 pivot ( max(a)
10 for lvl in (1,2,3)
11 )
12 ;
1 2 3
---------- ---------- ----------
2711393 2711441 1234567
SQL>
जैसा कि आप देख सकते हैं कि ये सभी पूरी तरह से भयानक हैं और, पहले को बचाएं, अत्यधिक अक्षम। आपको यह सुनिश्चित करने के लिए अपने डेटाबेस को सामान्य रूप से सामान्य करना चाहिए कि आपको ऐसा नहीं करना है।