先看问题
-
varchar 大小写不敏感
【app_name】字段为varchar(64)类型
SELECT * FROM tb_app le WHERE le.app_name = 'order-goodsDetail'
改为:
SELECT * FROM tb_app le WHERE BINARY le.app_name = 'order-goodsDetail'
-
正则大小写不敏感
SELECT * FROM tb_app le WHERE le.app_name REGEXP '^[a-z][0-9a-z-]{2,48}[a-z0-9]$'
以上我正则匹配应用名都是小写,但大写也匹配出来了 按照以下修改即可大小写敏感查询,注意 BINARY 是加在列名前,而不是REGEXP前:
SELECT * FROM tb_app le WHERE BINARY le.app_name REGEXP '^[a-z][0-9a-z-]{2,48}[a-z0-9]$'
分析
MySQL中的utf8实质上不是标准的utf8,大家可以自行查询下这个历史问题,可以重新设置字符集来进行修复