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

रूबी में एक एसक्यूएल क्वेरी में मानों की सरणी भेजना?

PostgreSQL मानक SQL सरणियों और मानक any op (...) वाक्य रचना:

इसका मतलब है कि आप इस तरह SQL बना सकते हैं:

where name ilike any (array['%Richard%', '%Feynman%'])

यह अच्छा और संक्षिप्त है तो हम इसे बनाने के लिए रेल कैसे प्राप्त करते हैं? यह वास्तव में बहुत आसान है:

Model.where('name ilike any (array[?])', names.map { |s| "%#{s}%" })

कोई मैनुअल उद्धरण की आवश्यकता नहीं है, ActiveRecord सरणी को एक उचित रूप से उद्धृत / बची हुई सूची में बदल देगा जब यह ? भरता है में प्लेसहोल्डर।

अब आपको बस names . बनाना है सरणी। ऐसा कुछ आसान काम करना चाहिए:

fields = params.keys.select { |k| k.to_s =~ /\Afield\d+\z/ }
names  = params.values_at(*fields).select(&:present)

आप एकल 'a b' . को भी रूपांतरित कर सकते हैं 'a', 'b' . में इनपुट एक split . को उछाल कर और flatten मिश्रण में:

names = params.values_at(*fields)
              .select(&:present)
              .map(&:split)
              .flatten


  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 संस्करण नियंत्रण

  2. (var)char प्रदर्शन के लिए कॉलम के प्रकार के रूप में?

  3. रेल में पोस्टग्रेज जेसन फ़ील्ड के साथ नेस्टेड कुंजी अपडेट करें

  4. RPostgreSQL के साथ UTF-8 / यूनिकोड टेक्स्ट एन्कोडिंग

  5. क्या दिए गए उपसमूह के लिए सभी समूहों के पास समान कुल शक्ति है?