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

ऑरैकल में सीमांकित स्ट्रिंग को पंक्तियों में बदलें

नल के लिए अनुमति देते हुए एक स्ट्रिंग को विभाजित करने के लिए इस विधि को बंद करना:

select regexp_substr('A~^B~^C~D^E','(.*?)(~\^|$)', 1, level, null, 1) from dual
connect by level < regexp_count('A~^B~^C~D^E','(.*?)(~\^|$)');

REGEXP_SUBS
-----------
A
B
C~D^E

जैसा कि लिंक किए गए उत्तर में यह किसी भी वर्ण की तलाश करता है, गैर लालची, उसके बाद ~^ के संयोजन के बाद (कैरेट के साथ बच निकला, इसलिए ~\^ ) या अंतिम पंक्ति। regexp_substr() कॉल subexpr specify को निर्दिष्ट करने के लिए वैकल्पिक तर्कों का भी उपयोग करता है - इसलिए इसे केवल पहला समूह मिलता है (.*? ) और स्वयं परिसीमक नहीं, जो दूसरे समूह में है।

यदि आप एक विशिष्ट तत्व चाहते हैं तो वह लिंक की गई पोस्ट के और भी करीब है:

select regexp_substr('A~^B~^C~D^E','(.*?)(~\^|$)', 1, 3, null, 1) from dual;

REGEX
-----
C~D^E

या जैसा कि आप इसे एक प्रक्रिया में कर रहे हैं, एक संग्रह को पॉप्युलेट करने के लिए कनेक्ट-बाय क्वेरी का उपयोग करें, और यदि आप एक से अधिक को देख रहे हैं, तो आपको जिस तत्व की आवश्यकता है उसे चुनें।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. हल्का खरीद साहसिक

  2. .NET एप्लिकेशन के लिए Oracle प्रदाता कैसे चुनें?

  3. क्या Oracle का SYS_GUID () UUID RFC 4122 अनुरूप है?

  4. Oracle में विभिन्न प्रकार के PL/SQL संग्रह का उपयोग करने का उद्देश्य

  5. घंटे और मिनट में परिणाम प्राप्त करने के लिए ऑरैकल में 2 तिथियां कैसे घटाएं?