You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL中匹配首字母为a/b/c/f等的简化查询方法咨询

更简洁的MySQL查询写法

当然有更简洁的写法!你说的没错,直接用IN ('a%', 'b%')确实不行,因为IN是做精确字符串匹配的,它会把'a%'当成完整的字符串去比对,而不是模糊匹配的通配符。下面给你两种常用的简洁方案:

方案一:使用正则表达式(REGEXP/RLIKE)

MySQL支持正则匹配,你可以用REGEXP或者它的别名RLIKE来匹配首字母在指定范围内的内容:

SELECT * 
FROM your_table 
WHERE your_column REGEXP '^[abcf]';
  • ^ 表示匹配字符串的开头位置
  • [abcf] 表示匹配括号里的任意一个字符,也就是首字母是a、b、c、f中的任意一个

如果你的字段内容可能包含大小写,想要忽略大小写的话,可以转换后匹配:

-- 忽略大小写的写法
SELECT * 
FROM your_table 
WHERE LOWER(your_column) REGEXP '^[abcf]';

方案二:用LEFT()函数配合IN

另一种思路是提取字段的首字母,再用IN来匹配,这样就可以利用IN的简洁性了:

SELECT * 
FROM your_table 
WHERE LEFT(your_column, 1) IN ('a', 'b', 'c', 'f');
  • LEFT(your_column, 1) 会取出字段值的第一个字符
  • 之后用IN来匹配这个首字母是否在指定的集合里,逻辑清晰又简洁

如果需要支持大小写,同样可以转换后匹配:

SELECT * 
FROM your_table 
WHERE LOWER(LEFT(your_column, 1)) IN ('a', 'b', 'c', 'f');

两种方案各有优劣:正则表达式更灵活(比如可以匹配连续范围,比如^[a-cf]),而LEFT()+IN的写法对新手更友好,可读性更强,你可以根据自己的需求选择~

内容的提问来源于stack exchange,提问作者Arpan Jain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:08:46