mysql 查询区分大小写
查询判断时的大小写敏感
在明确大小敏感的条件前加 BINARY
:
SELECT * FROM `learn` WHERE BINARY NAME = 'bob' AND BINARY city = 'beijing';
SELECT * FROM `learn` WHERE BINARY `name` LIKE '%i%';
# REGEXP 注意BINARY位置不一样
SELECT * FROM `learn` WHERE `name` REGEXP BINARY 'i';
数据库名和表名的大小写敏感
如果你遇到的是找不到数据库找不到表之类的问题, 那么可以看看是不是其中存在大写字母.
先
将他们改成小写,再在my.cnf里添加这么一项:
[mysqld]
lower_case_table_names=1
重启mysql:
mysql.server restart
验证:
mysql> show VARIABLES like '%case%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_file_system | ON |
| lower_case_table_names | 1 |
+------------------------+-------+
2 rows in set (0.00 sec)
具体Windows/MacOS/Linux的路径大小写敏感情况具体如何太麻烦了,
推荐的做法是用mysql的时候,数据库名/表名/字段名 全部小写,用 _
分隔.
(然而这个配置并不能让sql判断时大小敏感,很多文章都有歧义)
其他
用brew装的mysql,没找到my.cnf在哪… 手动在mysql的配置查找目录下新建一个:
Default options are read from the following files in the given order:
/etc/my.cnf
/etc/mysql/my.cnf
/usr/local/etc/my.cnf
~/.my.cnf