यह आम तौर पर असंगत संयोजन के दो तारों की तुलना करने या विभिन्न संयोजन के डेटा को एक संयुक्त कॉलम में चुनने का प्रयास करने के कारण होता है।
क्लॉज COLLATE
आपको क्वेरी में उपयोग किए गए संयोजन को निर्दिष्ट करने की अनुमति देता है।
उदाहरण के लिए, निम्नलिखित WHERE
क्लॉज हमेशा आपके द्वारा पोस्ट की गई त्रुटि देगा:
WHERE 'A' COLLATE latin1_general_ci = 'A' COLLATE latin1_general_cs
आपका समाधान क्वेरी के भीतर दो स्तंभों के लिए एक साझा संयोजन निर्दिष्ट करना है। यहां एक उदाहरण दिया गया है जो COLLATE
. का उपयोग करता है खंड:
SELECT * FROM table ORDER BY key COLLATE latin1_general_ci;
एक अन्य विकल्प BINARY
. का उपयोग करना है ऑपरेटर:
BINARY str CAST(str AS BINARY) का शॉर्टहैंड है।
आपका समाधान कुछ इस तरह दिख सकता है:
SELECT * FROM table WHERE BINARY a = BINARY b;
या,
SELECT * FROM table ORDER BY BINARY a;