2011-09-30 10 views
5

मैं mysql में उच्चारण-संवेदनशील लेकिन केस-असंवेदनशील utf8 खोज कैसे कर सकता हूं? Utf8_bin केस संवेदनशील है, और utf8_general_ci उच्चारण असंवेदनशील है।mysql में संवेदनशील संवेदनशील और केस असंवेदनशील utf8 संयोजन होना संभव है?

+0

आज नहीं ... लेकिन, यदि आप केस फोल्डिंग चाहते हैं, लेकिन उच्चारण संवेदनशीलता, कृपया http://bugs.mysql.com पर एक अनुरोध दर्ज करें। –

उत्तर

2

ऐसा कोई प्रतीत नहीं होता है क्योंकि case sensitivity is tough to do in Unicode है।

utf8_general_cs संयोजन है लेकिन यह प्रयोगात्मक प्रतीत होता है, और this bug report के अनुसार, ऐसा नहीं करता है जब यह LIKE का उपयोग करने की अपेक्षा की जाती है।

यदि आपके डेटा में केवल पश्चिमी umlauts (यानी umlauts जो ISO-8859-1 में शामिल हैं) शामिल हैं, तो आप अपने खोज ऑपरेशन को latin1_german2_ci पर एकत्रित कर सकते हैं या इसके साथ एक अलग खोज कॉलम बना सकते हैं (वह विशिष्ट संयोजन this page के अनुसार संवेदनशील उच्चारण है; latin1_general_ci भी हो सकता है, मुझे नहीं पता और अभी परीक्षण नहीं कर सकता है)।

2

आप "कैफे" से "कैफे" अलग करना चाहते हैं आप उपयोग कर सकते हैं:

Select word from table_words WHERE Hex(word) LIKE Hex("café"); 

इस तरह यह कैफे 'वापस आ जाएगी।

अन्यथा यदि आप का उपयोग करें:

Select word from table_words WHERE Hex(word) LIKE Hex("cafe"); 

यह कैफे वापस आ जाएगी। मैं latin1_german2_ci संयोजन का उपयोग कर रहा हूं।

0

खोज उच्चारण-संवेदनशील बनाने के लिए आप "hex" का उपयोग कर सकते हैं। फिर इसे फिर से असंवेदनशील बनाने के लिए लेकस जोड़ें। तो यह होगा:

SELECT name FROM people WHERE HEX(LCASE(name)) = HEX(LCASE("René")) 

आप अपनी सभी इंडेक्स को खिड़की से बाहर फेंक देते हैं।

SELECT name FROM people WHERE name = "René" and HEX(LCASE(name)) = HEX(LCASE("René")) 

इस तरह सूचकांक "name" होगा पर: आप एक पूर्ण तालिका स्कैन करने के लिए होने से बचने के लिए चाहते हैं और आप "नाम" पर एक सूचकांक है, तो भी हेक्स और lcase बिना एक ही बात के लिए खोज उदाहरण के लिए केवल "René" और "रीन" पंक्तियों को खोजने के लिए उपयोग किया जाए और फिर "hex" के साथ तुलना पूरी तालिका के बजाय केवल दो पंक्तियों पर की जानी चाहिए।

+0

यदि आप केस फोल्डिंग चाहते हैं, लेकिन उच्चारण संवेदनशीलता, कृपया http://bugs.mysql.com पर एक अनुरोध दर्ज करें। –

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