2010-08-17 8 views
5

मैंने MySQL का उपयोग करके "गैर-अंग्रेज़ी" (पॉलिश) वर्णों के साथ एक समस्या देखी है।MySQL और पॉलिश शब्द

क्वेरी "का चयन करें 'abcde' = 'ABCDE'" रिटर्न "1" और तार नहीं के बराबर होती है रहे हैं ...

आप मेरी मदद कर सकता है? :) धन्यवाद!!!

उत्तर

9

utf8_general_ci के लिए वे बराबर हैं (ł के अपवाद के साथ, जिसे MySQL द्वारा एक बग नहीं माना जाता है), और 5.6 के बाद से आप utf8_unicode_520_ci का भी उपयोग कर सकते हैं जो सभी पोलिश अक्षरों को सही तरीके से संभालता है। उच्चारण और असंबद्ध वर्णों के इलाज के लिए utf8_polish_ci का उपयोग करें।

select 'abcde'='ąbćdę' COLLATE utf8_polish_ci 
>> 0 

'नहीं एक बग'

select 'abcde'='ąbćdę' COLLATE utf8_general_ci 
>> 1 

select 'abcdel'='ąbćdęł' COLLATE utf8_general_ci 
>> 0 

बग रिपोर्ट यहाँ देखें का डेमो: http://bugs.mysql.com/bug.php?id=9604

+2

यह ध्यान देने योग्य है कि MySQL 5.6 में आप "utf8_unicode_520_ci" कोलालेशन का उपयोग कर सकते हैं जो ł केस को उसी तरह से संभालता है जैसे utf8_general_ci अन्य पॉलिश वर्णों के साथ करता है। – kars7e

+0

धन्यवाद @bigfun। इस जानकारी को उत्तर में जोड़ा गया – Mchl

-3

आप MySQL क्वेरी में एल एल और एल एल जगह ले सकता है, इस तरह:

SELECT REPLACE(REPLACE('abcdel', 'Ł', 'L'), 'ł', 'l') = REPLACE(REPLACE('ąbćdęł', 'Ł', 'L'), 'ł', 'l') COLLATE utf8_general_ci 
>> 1 

और अब से सभी डायक्रिटिक अक्षरों को उनके गैर-विशिष्ट समकक्षों के बराबर बराबर किया जाता है।

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