SQL模糊查询(Like, Regexp)

先创建一张表

drop table if exists samplelike;
CREATE TABLE samplelike
( strcol VARCHAR(6) NOT NULL PRIMARY KEY);
-- DML :插入数据
START TRANSACTION; -- 开始事务
INSERT INTO samplelike (strcol) VALUES ('abcddd');
INSERT INTO samplelike (strcol) VALUES ('dddabc');
INSERT INTO samplelike (strcol) VALUES ('abdddc');
INSERT INTO samplelike (strcol) VALUES ('是abcdd');
INSERT INTO samplelike (strcol) VALUES ('dda是bc');
INSERT INTO samplelike (strcol) VALUES ('abddc是');
COMMIT; 

在这里插入图片描述

当代表否定时,则LIKE和REGEXP都用NOT来表示,NOT LIKE / REGEXP

1. LIKE

1.1 匹配多个字符:“%”

  • 找出以 “a”开头的
select * from samplelike where strcol like "a%";

在这里插入图片描述

  • 找出以 "d"结尾的
select * from samplelike where strcol like "%d";

在这里插入图片描述

  • 找出包含 “是” 的
select * from samplelike where strcol like "%是%";

在这里插入图片描述

1.2 匹配单个字符:“_”

一个 “_” 代表匹配一个字符

select * from samplelike where strcol like "abc___";

在这里插入图片描述


2. REGEXP

REGEXP是基于正则表达式匹配的。

  • “.”匹配任何单个的字符。
  • 一个字符类“[…]”匹配在方括号内的任何字符。 例如,“[abc]”匹配“a”、“b”或“c”。为了命名字符的一个范围,使用一个“-”。“[a-z]”匹配任何小写字母,而“[0-9]”匹配任何数字。
  • “ * ”匹配零个或多个在它前面的东西。 例如,“x”匹配任何数量的“x”字符,“[0-9]”匹配的任何数量的数字,而“.”匹配任何数量的任何东西。
  • MySQL是不区分大小写的。如果要区分大小写,应该使用BINARY关键字,如where xxx REGEXP BINARY ‘Hello.000’
  • 多个筛选条件时可以用 “|” 隔开

Example

  • 找出包含 “a是”或者“dc”
select * from samplelike where strcol regexp "a是|dc";

在这里插入图片描述

  • 选择以 "a"开头的
select * from samplelike where strcol regexp "^[aA]"

在这里插入图片描述

  • 找出以 “d” 结尾的
select * from samplelike where regexp "d$";

在这里插入图片描述

参考来源:
DataWhale-SQL: Task03: 3.4.2 LIKE谓词 – 用于字符串的部分一致查询

老生常谈:MYSQL模式匹配 REGEXP和like的用法

更多正则匹配用法:
MySQL学习笔记:like和regexp的区别

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值