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

लाइन के लिए नियमित अभिव्यक्ति अलग-अलग लंबे शब्दों को अलग करती है

यह आपकी नियमित अभिव्यक्ति के कारण है। बस . देखने के लिए इसे बदलें लगातार वर्णमाला वर्ण:

 select regexp_substr('abc
 def
 ghi', '[[:alpha:]]+', 1 ,level)
   from dual
connect by regexp_substr('abc
def
ghi', '[[:alpha:]]+', 1 ,level) is not null

यह एकल वर्णों के लिए भी कार्य करता है:

select regexp_substr('a
b
c', '[[:alpha:]]+', 1 ,level)
from dual
     connect by regexp_substr('a
b
c', '[[:alpha:]]+', 1 ,level) is not null;

आपने टिप्पणी की है:

कृपया शुरू करने के लिए कृपया हमेशा सभी जानकारी को प्रश्न में रखें।

ऐसा लगता है कि आप एक न्यूलाइन कैरेक्टर (कैरिज रिटर्न या कैरिज रिटर्न/लाइन फीड) पर विभाजित होना चाह रहे हैं

जिस स्थिति में आप विभाजित करना चाह रहे हैं जहाँ कुछ नहीं है इन पात्रों में से एक। मैंने यहां सभी नियंत्रण वर्णों का उपयोग किया है क्योंकि मैं आलसी हूं लेकिन यह आपके प्रदत्त डेटा के लिए काम करेगा। यदि आपके पास कुछ बेल वर्ण हैं तो यह काम नहीं करेगा, आपको अधिक विशिष्ट होना होगा।

with the_data as ( 
select 'a
b
c' as dat
  from dual
       )
 select regexp_substr(dat, '[^[:cntrl:]]+', 1 ,level)
  from the_data
connect by regexp_substr(dat, '[^[:cntrl:]]+', 1 ,level) is not null;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-00904:अच्छा रिज़ॉर्ट:अमान्य पहचानकर्ता

  2. ओरेकल एसक्यूएल में पीके का उल्लंघन

  3. रोरैकल - dbWriteTable, दिनांक कॉलम

  4. एकाधिक IN पैरामीटर के साथ संग्रहीत प्रक्रिया

  5. UTL_FILE.FOPEN () प्रक्रिया निर्देशिका के लिए पथ स्वीकार नहीं कर रही है?