2011-01-20 13 views
5

क्या कोई जानता है कि पोस्टग्रेस 7.4 के साथ केस असंवेदनशील खोज/क्वेरी कैसे करें?केस असंवेदनशील खोज/प्रश्न

मैं रेगेक्स सोच रहा था लेकिन यह सुनिश्चित नहीं है कि यह कैसे करें या शायद कोई फ़ंक्शन/ध्वज या कुछ मैं क्वेरी जोड़ सकता हूं?

मैं प्रश्नों को जोड़ने और निष्पादित करने के लिए PHP का उपयोग कर रहा हूं।

तो मैं पता जानकारी से मेल खाता हूं।

उदाहरण:

123 main street 
123 Main st. 
123 Main Street 
123 main st 
123 Main st 
etc... 

किसी भी विचार?

SELECT address FROM tbl WHERE address LIKE '%123 %ain%' 

उत्तर

17

उपयोग ILIKE, उदा .:

... 
WHERE 
    address ILIKE '123 main st%' 

Documentation


वैकल्पिक रूप से आप UPPER या LOWER, इस्तेमाल कर सकते हैं जैसे:

... 
WHERE 
    LOWER(address) LIKE '123 main st%' 
+1

खोज को तेज करने के लिए नीचे (पता) पर एक सूचकांक जोड़ने के लिए मत भूलना (हालांकि एक सूचकांक '% foo% 'के लिए मदद नहीं करेगा, केवल' foo%' के लिए) –

2

अलावा iLike और कम() दृष्टिकोण, मैं दो अन्य संभावनाओं को देख सकते हैं से:

  1. उपयोग citext डेटा प्रकार: http://www.postgresql.org/docs/9.0/static/citext.html
  2. पूर्ण पाठ खोज का उपयोग करें - जो वास्तव में सबसे लचीला और सबसे तेज़ समाधान हो सकता है, हालांकि शुरुआत करने के लिए थोड़ा और जटिल है।
+0

मैं नहीं हूं पोस्टग्रेस 7.4 और एफटीएस के साथ संगत होने के बारे में निश्चित रूप से यह एक अच्छा समाधान होगा, यह सही ढंग से चलने के प्रयासों को आवश्यकता से अधिक हो सकता है। मैंने वास्तव में कभी भी एफटीएस का उपयोग नहीं किया है, क्या आपने इस विषय पर अनुशंसा की और लेखों को लिखा है जो सड़क के पते की दिशा में तैयार हो सकते हैं? –

+0

क्षमा करें मुझे नहीं पता था कि आप इस तरह के पुराने संस्करण का उपयोग कर रहे हैं। मैं कहूंगा कि आपको पहले अपग्रेड करना चाहिए, और फिर आगे बढ़ना चाहिए। एफटीएस निश्चित रूप से 7.x के लिए एक विकल्प नहीं है। आपको वास्तव में कम से कम 8.4 –

+0

पर वास्तव में अपडेट करना चाहिए यदि मैं वास्तव में मेरी पसंद नहीं कर सकता :( –

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