एक BINARY
तुलना
सटीक मिलान के लिए दो स्ट्रिंग्स की आवश्यकता होती है
सामान्य परिस्थितियों में, पिछली सफेद जगह को तुलना में नहीं माना जाता है, लेकिन BINARY
ऑपरेटर इसे मजबूर करता है:
mysql> SELECT BINARY ' ' = ' ';
+--------------------+
| BINARY ' ' = ' ' |
+--------------------+
| 0 |
+--------------------+
संयोग से, यह केवल व्हाइटस्पेस-केवल तुलना नहीं है जो पिछली व्हाइटस्पेस समस्या से प्रभावित होती है:
mysql> SELECT 'abc ' = 'abc';
+------------------+
| 'abc ' = 'abc' |
+------------------+
| 1 |
+------------------+
...लेकिन...
mysql> SELECT BINARY 'abc ' = 'abc';
+-------------------------+
| BINARY 'abc ' = 'abc' |
+-------------------------+
| 0 |
+-------------------------+
...और इससे भी अधिक भ्रामक रूप से, अग्रणी व्हाइटस्पेस है महत्वपूर्ण:
mysql> SELECT ' abc ' = 'abc';
+-------------------+
| ' abc ' = 'abc' |
+-------------------+
| 0 |
+-------------------+
अनुक्रमण के संबंध में:
BINARY
एक इंडेक्स को कैरेक्टर कॉलम पर इस्तेमाल होने से रोकेगा। हालांकि, दस्तावेज़ पर एक नोट
यह सुझाव देता है कि अनुक्रमणिका करेगी इस्तेमाल किया जा सकता है अगर BINARY
ऑपरेटर को तुलना के स्ट्रिंग शाब्दिक पक्ष पर लागू किया जाता है:
SELECT * FROM `tbl` WHERE `col` = BINARY 'string '