LIKE-запрос не работает после того, как я изменил CHARACTER SET таблицы MySQL на UTF-8 - PullRequest
0 голосов
/ 28 сентября 2011

У меня есть база данных MySQL с 30 строками в таблице customer_customer. Из которых 5 записей имеют adm_name как Mike.

mysql> select id from customer_customer where adm_name like '%mike%';
+----+
| id |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
|  5 |
+----+
5 rows in set (0.00 sec)

Теперь я изменил набор символов моей таблицы на utf8

mysql> ALTER TABLE customer_customer CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
Query OK, 30 rows affected (0.03 sec)
Records: 30  Duplicates: 0  Warnings: 0

Опять же, если я выполню запрос, аналогичный MySQL, MySQL не вернет мне никаких записей.

mysql> select id from customer_customer where adm_name like '%mike%';
Empty set (0.00 sec)

Я не могу понять это поведение. Есть кто-нибудь, кто сталкивался с такой ситуацией? Я что-то не так делаю?

1 Ответ

0 голосов
/ 28 сентября 2011

Вы изменили параметры сортировки на двоичные, в этом случае сравнение выполняется побайтно, а не посимвольно.Вот хороший пример и объяснение оператора BINARY .

mysql> SELECT 'a' = 'A';
        -> 1
mysql> SELECT BINARY 'a' = 'A';
        -> 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...