the manual में उल्लेख किया है के साथ प्रयास करें निराकरण:
सभी MySQL collations प्रकार PADSPACE
के हैं। इसका मतलब है कि MySQL में सभी CHAR
और VARCHAR
मान किसी पीछे की रिक्त स्थान के बिना तुलना किए जाते हैं।
LIKE
ऑपरेटर की परिभाषा में, यह कहा गया है:
विशेष रूप से, पीछे वाले स्पेस जो CHAR
या VARCHAR
तुलना =
ऑपरेटर के साथ प्रदर्शन के लिए सच नहीं है, महत्वपूर्ण हैं:
जैसा कि this answer में उल्लेख किया गया है:
यह व्यवहार SQL-92 और SQL: 2008 में निर्दिष्ट है। तुलना के प्रयोजनों के लिए, छोटी स्ट्रिंग लंबी स्ट्रिंग की लंबाई तक गद्देदार है।
मसौदा से (8.2 < तुलना विधेय >):
तो एक्स के पात्रों में लंबाई Y के पात्रों में लंबाई के बराबर नहीं है, तो छोटे स्ट्रिंग प्रभावी रूप से बदल दिया जाता है, प्रयोजनों के लिए तुलनात्मक रूप से, स्वयं की एक प्रति के साथ जो एक या अधिक पैड वर्णों के दायीं तरफ संगतता द्वारा लंबी स्ट्रिंग की लंबाई तक बढ़ा दी गई है, जहां पैड चरित्र सीएस के आधार पर चुना जाता है। यदि सीएस में कोई पीएडी विशेषता नहीं है, तो पैड कैरेक्टर एक कार्यान्वयन-निर्भर चरित्र है जो एक्स और वाई के चरित्र सेट में किसी भी चरित्र से भिन्न होता है जो सीएस के तहत किसी भी स्ट्रिंग से कम होता है। अन्यथा, पैड वर्ण < स्थान > है।
अन्य उत्कृष्ट समाधान के अलावा: यदि स्तंभ प्रकार चार या varchar की है
select binary 'a' = 'a '
+1, http://dev.mysql.com/doc/refman/5.0/en/char.html, जब CHAR मान प्राप्त किए गए हैं, पीछे वाले स्पेस निकाल दिए जाते हैं। –