扫盲 2026.10.01 17:47 42 次浏览 0 条评论

MySQL字符串查询注意事项

字符串查询就那几个坑,踩过一次就记住了。

一是 LIKE 的通配符。% 代表任意多个字符,_ 代表一个字符。写成 %张% 前面带百分号,索引用不上,数据一多就慢;写成 张% 才能走索引。

二是大小写。排序规则以 _ci 结尾的不区分大小写,_cs 和 _bin 才区分。查不到数据先看看这个。

三是隐式类型转换。字段是 varchar,你写 WHERE name = 0,MySQL 会把 name 转成数字来比,非数字的字符串全变 0,结果可能整表都匹配上。查字符串必须加引号。

四是尾部空格。CHAR 存进去会把尾部空格砍掉,VARCHAR 不会,两边比较时结果可能对不上。

-- 前后都带 %,索引失效,全表扫描
SELECT * FROM user WHERE name LIKE '%张%';

-- 只带后置 %,可以用上索引
SELECT * FROM user WHERE name LIKE '张%';

-- 真要查名字里带 % 这个符号,得转义
SELECT * FROM user WHERE name LIKE '%\%%';

-- 反例:name 是 varchar,这样写会隐式转数字
SELECT * FROM user WHERE name = 0;

标签:MySQL,数据库,自学笔记

说点什么 0

行思随记

欢迎来到:行思随记