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

Oracle IN कंडीशन के अंदर एक स्ट्रिंग का उपयोग करता है

in collections . के साथ प्रयोग किया जाता है , इसलिए आपकी इनपुट स्ट्रिंग को पहले collections . में परिवर्तित किया जाना चाहिए (पंक्तियों में तोड़कर, अल्पविराम सीमांकक के आधार पर)

कुछ इस तरह का प्रयास करें

Select * from employ where id = 12 and org_id in (
SELECT decode(:input_id,null,  (select  employ.org_id from dual) 
,TRIM(REGEXP_SUBSTR(temp, '[^,]+', 1, level)) )  
    FROM (SELECT  :input_id temp FROM DUAL)
    CONNECT BY level <= REGEXP_COUNT(temp, '[^,]+')
    )

वैसे, यह org_id in () true लौटाएगा अगर :input_id null है ।

एक और तरीका पहले पूरी क्वेरी को एक स्ट्रिंग के रूप में बनाना होगा और फिर इसे execute immediate . के साथ निष्पादित करना होगा या php . के माध्यम से . हालांकि यह sql इंजेक्शन बढ़ा सकता है चिंताओं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. OleDB डेटा प्रदाता VBA/Excel नहीं मिल सकता है

  2. Oracle का उपयोग करके हाइबरनेट में अंतिम सम्मिलित पंक्ति की आईडी पुनर्प्राप्त नहीं कर सकता

  3. वापसी पंक्तियाँ जिनमें Oracle में संख्यात्मक मान होते हैं

  4. ऑरैकल डेटाबेस में फिंगरप्रिंट टेम्पलेट को कैसे स्थानांतरित करें

  5. डेटाबेस में दोनों, या तो-या, लेकिन शून्य आवश्यकता नहीं लागू करना