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

Oracle LISTAGG () क्वेरी के उपयोग के लिए

सबसे पहले, यदि संभव हो तो एक ही कथन में सब कुछ करना लगभग हमेशा अधिक कुशल होता है।

आपकी दूसरी क्वेरी काम नहीं करती है क्योंकि आप सब कुछ एक ही स्ट्रिंग में वापस कर रहे हैं। यह नहीं है एक अल्पविराम सीमांकित सूची जैसा कि IN कथन द्वारा आवश्यक है।

हालांकि इससे बचने के लिए एक छोटी सी तरकीब है। मान लें कि आप दो चयन कथनों के बीच किसी चीज़ के लिए स्ट्रिंग का उपयोग कर रहे हैं जिसे आप regexp_substr() अपनी स्ट्रिंग को किसी उपयोगी चीज़ में बदलने के लिए।

कुछ इस तरह काम करेगा;

select city
  from vwpersonprimaryaddress
 where state in ( 
           select regexp_substr(v_province,'[^'',]+', 1, level) 
             from dual
          connect by regexp_substr(v_province, '[^'',]+', 1, level) is not null
                  )

चर v_province दो बार उद्धृत करने के लिए बदलना होगा, उदाहरण के लिए '''AB'',''AZ'',''BC''' यह काम करने के लिए।

यह रहा एक कार्यशील उदाहरण



  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. डीबी फ्लोट कॉलम में एक्सपोनेंशियल वैल्यू डालने से बचें

  3. Oracle PL/SQL में सबमिट किए गए कार्य के समाप्त होने की प्रतीक्षा कर रहा है?

  4. आउटपुट को क्षैतिज रूप से प्रदर्शित करने की क्वेरी

  5. लोब प्रतिधारण