REGEXP使用
大约 2 分钟
REGEXP使用
两个场景:
- WHERE 里用来筛选 的 REGEXP
- SELECT 里用来归类 的 REGEXP
一、REGEXP 核心一句话
字段 REGEXP '规则' 只要字段内容符合规则,就返回真(匹配成功)
核心符号(必记)
|= 或者(包含任意一个就算)^= 以...开头$= 以...结尾[]= 包含其中任意一个字符
二、场景1:WHERE 中筛选数据(过滤用)
1)包含任意关键词
需求:查询用户名包含 小明、小红、小李 任意一个
SELECT * FROM user
WHERE username REGEXP '小明|小红|小李';
匹配:小明、王小明、小红同学、小李abc
2)以某内容开头
需求:手机号 以13开头
SELECT * FROM user
WHERE phone REGEXP '^13';
3)以某内容结尾
需求:地址 以‘公司’结尾
SELECT * FROM user
WHERE address REGEXP '公司$';
4)包含数字
SELECT * FROM user
WHERE username REGEXP '[0-9]';
5)包含大写字母
SELECT * FROM user
WHERE username REGEXP '[A-Z]';
三、场景2:SELECT 中归类(你最需要的!)
需求:
只要字段里出现任意一个关键词,就自动归类为 XX
示例:用户标签智能分类
SELECT
username,
phone,
CASE
WHEN username REGEXP '小明|小红|小李' THEN '内部员工'
WHEN phone REGEXP '^13|^15' THEN '移动用户'
WHEN username REGEXP 'test|demo' THEN '测试账号'
ELSE '普通用户'
END AS user_type
FROM user;
效果
- 只要 username 出现小明/小红/小李 → 标为【内部员工】
- 只要 phone 以13或15开头 → 标为【移动用户】
- 只要 username 含 test/demo → 标为【测试账号】
通用模板
CASE
WHEN 字段 REGEXP '关键词1|关键词2|关键词3' THEN '分类A'
WHEN 字段 REGEXP '关键词4|关键词5' THEN '分类B'
WHEN 字段 REGEXP '开头内容' THEN '分类C'
ELSE '其他'
END AS 分类名称
四、最精简笔记版(可直接抄)
- REGEXP:字符串正则匹配,比 LIKE 强得多
- 符号:
A|B|C= 包含A或B或C^A= 以A开头A$= 以A结尾
- 两种用法:
- WHERE:筛选符合条件的数据
- SELECT + CASE:根据关键词自动归类
- 经典句式:
WHERE 字段 REGEXP 'a|b|c'CASE WHEN 字段 REGEXP 'a|b' THEN '分类' END
这样你WHERE 筛选 + SELECT 归类两个例子都齐了,不多不少,正好是你想要的。