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

एकल पैरामीटर में एकाधिक मान पास करें

VARIADIC

जैसे @mu प्रदान किया गया, VARIADIC आपका दोस्त है। एक और महत्वपूर्ण विवरण:

आप यह भी कर सकते हैं किसी फ़ंक्शन को VARIADIC . का उपयोग करके कॉल करें एक सरणी प्रकार के साथ पैरामीटर सीधे। कुंजी शब्द जोड़ें VARIADIC फ़ंक्शन कॉल में:

SELECT * FROM  f_test(VARIADIC '{1, 2, 3}'::int[]);

के बराबर है:

SELECT * FROM  f_test(1, 2, 3);

अन्य सलाह

Postgres 9.1 या बाद के संस्करण में right() एक नकारात्मक . के साथ लंबाई एक स्ट्रिंग से प्रमुख वर्णों को ट्रिम करने के लिए तेज़ और आसान है:

right(j.status, -2)

के बराबर है:

substring(j.status, 3, char_length(jobs.status))

आपके पास j."DeleteFlag" . है साथ ही j.DeleteFlag (बिना दोहरे उद्धरण चिह्नों के) आपकी क्वेरी में। यह शायद गलत है। देखें:

  • PostgreSQL त्रुटि:संबंध पहले से मौजूद है

"DeleteFlag" = '0' एक और समस्या को इंगित करता है। अन्य RDBMS के विपरीत, Postgres ठीक से boolean . का समर्थन करता है डेटा प्रकार। यदि ध्वज boolean धारण करता है डेटा (true / false / NULL ) boolean . का उपयोग करें प्रकार। एक वर्ण प्रकार जैसे text अनुचित/अक्षम होगा।

उचित कार्य

आपको यहां पीएल/पीजीएसक्यूएल की आवश्यकता नहीं है। आप कर सकते हैं एक आसान SQL फ़ंक्शन का उपयोग करें:

CREATE OR REPLACE FUNCTION f_test(VARIADIC int[])
  RETURNS TABLE (id int, reference int, job_title text, status text)
  LANGUAGE sql AS
$func$
   SELECT j.id, j.reference, j.job_title
        , ltrim(right(j.status, -2)) AS status
   FROM   company c
   JOIN   job     j USING (id)
   WHERE  c.active
   AND    NOT c.delete_flag
   AND    NOT j.delete_flag
   AND   (j.id = ANY($1) OR '{-1}'::int[] = $1)
   ORDER  BY j.job_title
$func$;

db<>फिडल यहाँ
पुराना sqlfiddle



  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. स्प्रिंगबूट+कोटलिन+पोस्टग्रेज और JSONB:org.hibernate.MappingException:JDBC प्रकार के लिए कोई बोली मैपिंग नहीं

  3. हटाए गए डॉकर कंटेनर से डेटा कैसे पुनर्प्राप्त करें? इसे डेटा से फिर से कैसे कनेक्ट करें?

  4. Postgres स्कीमा का SQLAlchemy समर्थन

  5. कैसे PostgreSQL में एक सरणी के तत्वों के लिए एक सूचकांक बनाने के लिए?