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

ऑरैकल का उपयोग करके सीमांकक स्थिति द्वारा विभाजित स्ट्रिंग

यदि आपके पास केवल एक स्ट्रिंग है और आप जानते हैं कि इसमें हमेशा चार भाग होते हैं, तो आप इसे केवल मानक स्ट्रिंग फ़ंक्शंस का उपयोग करके (और नियमित अभिव्यक्तियों से परहेज करते हुए, जो अधिक लचीले होते हैं लेकिन अक्सर धीमे होते हैं) इसे इस तरह विभाजित कर सकते हैं।

नोट :इस उत्तर का दूसरा भाग "भागों" की चर संख्या वाले स्ट्रिंग्स को संबोधित करता है।

with inputs ( str ) as (
       select ',,defoifcd,87765' from dual
     )
-- end of TEST data; SQL query begins below (use your actual table and column names)
select substr(str, 1, instr(str, ',') - 1) as part_1,
       substr(str, instr(str, ',') + 1, 
              instr(str, ',', 1, 2) - instr(str, ',') - 1) as part_2,
       substr(str, instr(str, ',', 1, 2) + 1, 
              instr(str, ',', 1, 3) - instr(str, ',', 1, 2) - 1) as part_3,
       substr(str, instr(str, ',', -1) + 1) as part_4
from   inputs;

PART_1   PART_2   PART_3   PART_4
-------- -------- -------- --------
                  defoifcd 87765

1 row selected.

यदि भागों की संख्या पहले से ज्ञात नहीं है, तो आउटपुट को एक अलग प्रारूप में प्राप्त करना बेहतर है (नीचे आउटपुट देखें)। यदि किसी को कॉलम में भागों को व्यवस्थित करने की आवश्यकता है जो अन्य सभी प्रसंस्करण के बाद किया जा सकता है - और यह हमेशा SQL में किए जाने के बजाय रिपोर्टिंग एप्लिकेशन के लिए सबसे अच्छा छोड़ दिया जाता है।

with inputs ( id, str ) as (
       select 1, ',,defoifcd,87765' from dual union all
       select 2, ''                 from dual union all
       select 3, 'a, b, c'          from dual
     )
-- end of TEST data; SQL query begins below (use your actual table and column names)
select id, str, level as part_number,
       substr(aug_str, instr(aug_str, ',', 1, level) + 1,
              instr(aug_str, ',', 1, level + 1) - instr(aug_str, ',', 1, level) - 1) as val
from   ( select id, str, ',' || str || ',' as aug_str from inputs)
connect by level <= length(str) - length(translate(str, 'z,', 'z')) + 1
       and prior id = id
       and prior sys_guid() is not null
;

ID STR              PART_NUMBER VAL
-- ---------------- ----------- ----------
 1 ,,defoifcd,87765           1
 1 ,,defoifcd,87765           2
 1 ,,defoifcd,87765           3 defoifcd
 1 ,,defoifcd,87765           4 87765
 2                            1
 3 a, b, c                    1 a
 3 a, b, c                    2  b
 3 a, b, c                    3  c

8 rows selected.



  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. एक कथन के साथ कई विशेषताओं और तालिकाओं पर Oracle SQL विशेषाधिकार प्राधिकरण

  3. Oracle तारीख बराबर लगती है

  4. विंडोज़ पर Oracle डाटाबेस कैसे स्थापित करें

  5. ओरेकल में अद्यतन क्वेरी के लिए कोई प्रतिक्रिया नहीं