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

मैं प्रश्नवाचक चिह्न वाले PostgreSQL JSON(B) ऑपरेटरों का उपयोग कैसे करूं? जेडीबीसी के माध्यम से

दो संभावित समाधान हैं:

तैयार किए गए कथनों के बजाय स्थिर कथनों का उपयोग करें

यह सबसे आसान समाधान है, लेकिन आप तैयार बयानों (प्रदर्शन, एसक्यूएल इंजेक्शन सुरक्षा, आदि) से सभी लाभ खो देते हैं। हालांकि, यह काम करेगा

try (Statement s = c.createStatement();
     ResultSet rs = s.executeQuery("select '{}'::jsonb ?| array['a', 'b']")) {
     ...
}

ऑपरेटर से बचें। इसके बजाय किसी फ़ंक्शन का उपयोग करें (नोट:अनुक्रमणिका का उपयोग नहीं किया जा सकता है)

ऑपरेटर pg_catalog . में मौजूद बैकिंग फ़ंक्शन के लिए केवल सिंटैक्स शुगर हैं . यहां इन कार्यों के नाम खोजने का तरीका बताया गया है:

SELECT 
  oprname, 
  oprcode || '(' || format_type(oprleft,  NULL::integer) || ', ' 
                 || format_type(oprright, NULL::integer) || ')' AS function
FROM pg_operator 
WHERE oprname = '?|';

उपरोक्त पैदावार:

oprname  function
----------------------------------------------------------------------------------
?|       point_vert(point, point)
?|       lseg_vertical(-, lseg)
?|       line_vertical(-, line)
?|       jsonb_exists_any(jsonb, text[])    <--- this is the one we're looking for
?|       exists_any(hstore, text[])

तो, सबसे सरल उपाय यह है कि केवल ऑपरेटर का उपयोग न करें, बल्कि इसके बजाय संबंधित फ़ंक्शन का उपयोग करें:

try (PreparedStatement s = c.prepareStatement(
         "select jsonb_exists_any('{}'::jsonb, array['a', 'b']");
     ResultSet rs = s.executeQuery()) {
     ...
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL में JSONB मान मर्ज करना?

  2. Postgres में CSV फ़ाइल के मानों के साथ चयनित पंक्तियों को कैसे अपडेट करें?

  3. Npgsql और इकाई फ्रेमवर्क के साथ पोस्टग्रेएसक्यूएल को अस्वीकार्य का उपयोग करके क्वेरी करें

  4. पासवर्ड के बिना psql कमांड के साथ बैच फ़ाइल चलाएँ

  5. SQL यादृच्छिक डेटा के साथ तालिका पॉप्युलेट करें