2010-07-01 16 views
6

मैं एक प्रश्न मैं के साथ एक खोज के लिए उपयोग कर रहा हूँ है: इस तरह की स्थिति:% वाइल्डकार्ड के साथ रेल एसक्यूएल क्वेरी SQLite में काम करता है लेकिन PostgreSQL नहीं?

:conditions => ['family_name LIKE ? OR given_name LIKE ?', "%#{params[:search]}%", "%#{params[:search]}%"] 

क्वेरी SQLite पर स्थानीय रूप से ठीक काम करता है, लेकिन जब मैं दोनों के लिए ही पहले% काम करता है PostgreSQL पर Heroku करने के लिए धक्का, family_name और given_name। दूसरे शब्दों में, यह एक ऐसे शब्द से मेल खाता है जो किसी शब्द के अंत में होता है लेकिन शुरुआत या मध्य नहीं होता है।

उदाहरण: FAMILY_NAME => "वाशिंगटन" और: given_name => "जॉर्ज"

ए 'ington "या" rge "के लिए खोज इस रिकॉर्ड को पुनः प्राप्त करेगा के साथ एक मौजूदा रिकॉर्ड है। "वॉश" या "जिओ" की खोज नहीं होगी।

मैं एक नया उपयोगकर्ता हूं और रेल के लिए काफी नया हूं। आपकी सहायता के लिये पहले से ही धन्यवाद।


समाधान

संबंधित धागे: 1 2

यहाँ ठीक मैं उपयोग कर रहा हूँ है:

:conditions => ['LOWER(family_name) LIKE ? OR LOWER(given_name) LIKE ?', "%#{params[:search].downcase}%", "%#{params[:search].downcase}%"] 

उत्तर

11

LIKE Postgres में एक केस-संवेदी ऑपरेटर है। केस-असंवेदनशील पैटर्न मिलान के लिए ILIKE या other standard methods उपयोग करें।

+0

प्रश्न-संवेदी होने वाली क्वेरी कभी भी मेरे दिमाग को पार नहीं करती है। बहुत बहुत धन्यवाद। मैंने क्वेरी में लोअरकेस में सब कुछ सेट अप करना समाप्त कर दिया क्योंकि यह दोनों प्रकार के डेटाबेस के साथ संगत है। संपादित करें: प्रश्न के लिए अंतिम कोड जोड़ा गया। – studiofellow

संबंधित मुद्दे