Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara membandingkan string untuk satu spasi

BINARY perbandingan dari dua string diperlukan untuk kecocokan yang tepat

Dalam keadaan normal, spasi spasi tambahan tidak dianggap dalam perbandingan, tetapi BINARY operator memaksanya menjadi:

mysql> SELECT BINARY '   ' = ' ';
+--------------------+
| BINARY '   ' = ' ' |
+--------------------+
|                  0 |
+--------------------+

Kebetulan, bukan hanya perbandingan spasi saja yang terpengaruh oleh masalah spasi putih tambahan:

mysql> SELECT 'abc   ' = 'abc';
+------------------+
| 'abc   ' = 'abc' |
+------------------+
|                1 |
+------------------+

...tapi...

mysql> SELECT BINARY 'abc   ' = 'abc';
+-------------------------+
| BINARY 'abc   ' = 'abc' |
+-------------------------+
|                       0 |
+-------------------------+

...dan yang lebih membingungkan lagi, spasi putih di depan adalah signifikan:

mysql> SELECT ' abc   ' = 'abc';
+-------------------+
| ' abc   ' = 'abc' |
+-------------------+
|                 0 |
+-------------------+

Mengenai pengindeksan:

BINARY akan mencegah indeks digunakan pada kolom karakter. Namun, catatan di dokumen menunjukkan bahwa indeks akan digunakan jika BINARY operator diterapkan ke sisi literal string dari perbandingan seperti pada:

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. Bagaimana cara menjalankan kueri di MYSQL tanpa menulisnya ke log biner?

  2. Izin Pengguna MySQL

  3. LAST_INSERT_ID() MySQL

  4. Bagaimana cara menggunakan indeks secara efisien dalam kueri mysql

  5. ckfinder php 2.6.2 pengaturan tampilan, tampilan, penyortiran tidak berfungsi