【问题标题】:LIKE query does not work after I change CHARACTER SET of a MySQL Table to UTF-8将 MySQL 表的 CHARACTER SET 更改为 UTF-8 后,LIKE 查询不起作用
【发布时间】:2011-11-26 15:17:39
【问题描述】:

我的 MySQL 数据库在 customer_customer 表中有 30 行。其中 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> select id from customer_customer where adm_name like '%mike%';
Empty set (0.00 sec)

我无法理解这种行为。有没有人遇到过这种情况?我做错什么了吗?

【问题讨论】:

标签: mysql django


【解决方案1】:

您将排序规则更改为二进制,在这种情况下,比较是逐字节而不是逐字符进行的。这是BINARY operator的一个很好的例子和解释。

mysql> SELECT 'a' = 'A';
        -> 1
mysql> SELECT BINARY 'a' = 'A';
        -> 0

【讨论】:

    猜你喜欢
    • 2017-07-11
    • 2011-02-23
    • 2010-10-04
    • 2022-01-03
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多