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 двоични регистрационни файлове (BinLog) с mysqlbinlog

  2. Съхраняване на социалноосигурителни номера

  3. Mysql Дублиращи се редове (Дублиране е открито с помощта на 2 колони)

  4. Моят PDO изявление не работи

  5. Разделяне на стойност от едно поле на две