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

रेल ActiveRecord:jsonb पर दोहरे उद्धरण चिह्नों के साथ बाइंड चर का उपयोग कैसे करें?

आप पैरामीटर प्लेसहोल्डर को उद्धृत स्ट्रिंग्स के अंदर नहीं रख सकते।

तथ्य यह है कि रेल आपको ऐसा करने की अनुमति देता है और एकल-उद्धृत स्ट्रिंग के अंदर एकल-उद्धृत स्ट्रिंग को प्रतिस्थापित करता है, यह दर्शाता है कि SQL के नियमों को समझने में रेल विफल (हमेशा की तरह) है।

लेकिन आप एक पैरामीटर प्लेसहोल्डर को अन्य स्ट्रिंग्स के साथ एक एक्सप्रेशन में रख सकते हैं। मैं एक नियमित PostgreSQL उपयोगकर्ता नहीं हूं, लेकिन मुझे लगता है कि आप एक पूर्ण JSON शाब्दिक बनाने के लिए स्ट्रिंग्स को एक साथ जोड़ सकते हैं:

Blog.where("upload_data @> '[ { \"name\": \"' || ? || '\"}]'", name)

यदि आप संपूर्ण JSON मान को पैरामीटर करते हैं, तो आप पा सकते हैं कि यह आपके कोड को और अधिक स्पष्ट करता है। %Q() का प्रयोग करें शाब्दिक दोहरे उद्धरणों को बैकस्लैश करने की आवश्यकता से बचने के लिए।

Blog.where("upload_data @> ?", %Q([ { "name": "#{name}" } ]))

या वैध JSON उत्पन्न करना सुनिश्चित करने के लिए, मैं अभिव्यक्ति को रूबी सिंटैक्स में डालूंगा, और फिर JSON में कनवर्ट करूंगा:

Blog.where("upload_data @> ?", JSON.generate( [{name: name}] ))



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं PHP में उच्च परिशुद्धता दशमलव के साथ कैसे काम करूं

  2. SQL इन-डीबी संचालन के लिए dplyr का उपयोग करते समय ifelse और grep कमांड

  3. मैं तालिका को केवल-पढ़ने के लिए कैसे चिह्नित कर सकता हूं?

  4. पहले से परिभाषित पर्यावरण चर पर putenv () की आवश्यकता क्यों है?

  5. कम कॉलम वाली एक पंक्ति को कई पंक्तियों में बदलें