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

वर्रे कॉलम में 2 वें तत्व को एक्सेस करना

आपको पंक्तियों 1 और 2 का चयन करना होगा और फिर अवांछित पूर्ववर्ती पंक्तियों को फ़िल्टर करने का एक तरीका निकालना होगा - एक तरीका CASE के साथ एकत्रीकरण का उपयोग करना है केवल दूसरी पंक्ति से मेल खाने के लिए कथन:

SQL Fiddle

Oracle 11g R2 स्कीमा सेटअप :

CREATE TABLE mytable ( myvarraycolumn ) AS
  SELECT SYS.ODCINUMBERLIST( 1, 2, 3 ) FROM DUAL UNION ALL
  SELECT SYS.ODCINUMBERLIST( 4, 5, 6 ) FROM DUAL;

क्वेरी 1 :

SELECT (
         SELECT MAX( CASE ROWNUM WHEN 2 THEN COLUMN_VALUE END )
         FROM   TABLE( t.myvarraycolumn )
         WHERE  ROWNUM <= 2
       ) AS second_element
FROM   mytable t

परिणाम :

| SECOND_ELEMENT |
|----------------|
|              2 |
|              5 |

यह काम नहीं कर रहा है क्योंकि:सहसंबद्ध आंतरिक क्वेरी में पहली पंक्ति के लिए, ROWNUM है 1 और आपका फ़िल्टर WHERE ROWNUM = 2 . है फिर यह कम होकर WHERE 1=2 . हो जाता है और फ़िल्टर का मिलान नहीं होता है और पंक्ति को छोड़ दिया जाता है। उसके बाद अगली पंक्ति का परीक्षण ROWNUM . के विरुद्ध किया जाएगा का 1 (चूंकि पिछली पंक्ति अब आउटपुट में नहीं है और इसमें कोई पंक्ति संख्या नहीं होगी), जो फिर से परीक्षण में विफल हो जाएगी और उसे छोड़ दिया जाएगा। दोहराएँ, विज्ञापन रुकना और सभी पंक्तियाँ विफल हो जाती हैं WHERE फ़िल्टर करते हैं और छोड़ दिए जाते हैं।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक्सेल डेटा शीट को Oracle डेटाबेस में लोड करें

  2. Oracle 9i, Oracle 10g और Oracle 11g डेवलपर सुइट फॉर्म और रिपोर्ट ट्यूटोरियल

  3. Oracle पंक्ति के एकाधिक स्तंभों पर धुरी का उपयोग करना

  4. ओरेकल के लिए सी # पैरामीटरयुक्त प्रश्न - गंभीर और खतरनाक बग!

  5. पीएल/एसक्यूएल ब्लॉक में एक रिकॉर्ड प्रकार को परिभाषित करें जो स्वयं के संग्रह को संदर्भित करता है