Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

एकल स्थान के लिए स्ट्रिंग-तुलना कैसे करें

एक 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   '


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में MAX () बनाम ग्रेटेस्ट ():क्या अंतर है?

  2. MySQL सेलेक्ट और IF () स्टेटमेंट

  3. एसक्यूएल दिनांक प्रारूप कन्वर्ट? [दिनांक मिमी.वर्ष से वर्ष-माह-दिन तक]

  4. MySQL - ऑपरेंड में 1 कॉलम होना चाहिए

  5. जबकि लूप के साथ MySQL सम्मिलित करें