Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak porównywać ciągi dla pojedynczej spacji

BINARY porównanie z dwóch ciągów jest wymagane do dokładnego dopasowania

W normalnych warunkach końcowe białe znaki nie są uwzględniane w porównaniu, ale BINARY operator wymusza, aby był:

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

Nawiasem mówiąc, problem z końcowymi białymi znakami ma wpływ nie tylko na porównania tylko z białymi znakami:

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

...ale...

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

...i jeszcze bardziej mylące, białe znaki to znaczące:

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

Jeśli chodzi o indeksowanie:

BINARY zapobiegnie użyciu indeksu w kolumnie znaków. Jednak uwaga na temat dokumentacji sugeruje, że indeks będzie być używane, jeśli BINARY operator jest stosowany do strony porównania z literałem łańcuchowym, jak w:

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. Czy istnieje sposób na przekazanie hasła użytkownika bazy danych do narzędzia wiersza poleceń mysqladmin?

  2. WYBIERZ wiersze MySQL, w których dzisiejsza data znajduje się między dwiema kolumnami DATE

  3. Jak mogę automatycznie utworzyć adres e-mail dla członków mojej witryny?

  4. Zapytanie mysqli/mysql wewnątrz funkcji nie działa

  5. Przekaż wartość zmiennej z JS do PHP