mysql not regexp_Mysql必知必会——使用正则表达式搜索(REGEXP)

本文介绍了如何在Mysql中使用正则表达式进行复杂搜索,对比了REGEXP与LIKE的区别,并举例展示了匹配字符串、或查询、匹配多个字符、匹配特殊字符串和预定义字符集等功能,帮助理解正则表达式在数据库查询中的应用。
摘要由CSDN通过智能技术生成

原标题:Mysql必知必会——使用正则表达式搜索(REGEXP)

本文主要介绍如何在 Mysql 中使用正则表达式进行搜索。

正则表达式是一个非常大的内容,我会在之后专门写博客介绍,这里只是简介一些常用匹配模式

博客文章地址:

简介

之前几篇文章讲解了各种各样的过滤数据条件,通过这些条件,我们已经能够满足日常开发中大部分的工作。但假设筛选条件更加复杂一点,比如你的老板叫你从邮箱+手机号码混合注册的用户中找出手机号码注册用户,要给他们发送营销短信。这时,之前的过滤方法就不太奏效。正则表达式搜索就派上大用场。

简单来说,正则表达式就是用来匹配文本的特殊字符串。比如,从文本中提取电话号码,带数字的用户名,或者提取某个特定格式的文本。

而且所有语言编辑器基本上都支持正则表达式,不得不说,正则表达式已经成为开发过程中强大而有力的工具。Mysql 也不例外,那么就开始正式学习这种特殊匹配方式。

本文所用到的 Mysql 表在文章最后的附录。

匹配字符串

匹配字符串是正则表达式最基础的应用。我们先给出一个例子:我们从一个用户表中查询出名字中包含有100数字的用户

bbd24aab6191cc22bf63a3695af9a754.png

SELECT * FROM my_user WHERE `name` REGEXP '100';

3173197b23ffba1c7291186666fbf16d.png

我们得到了用户ID为1的用户:小红100

该语句中不同于之前的语句,我们使用REGEXP关键字代表后面为正则表达式

这条语句看起来和LIKE语句特别相似,而且也是可以使用LIKE语句来实现。那使用正则表达式的意义何在?

原因很简单。假设,我现在需要匹配不仅仅是包含100数字的用户,而是100,200,或者300,只要是整百的都需要匹配。或者说,我需要所有名字里面包含数字的,无论什么数字。那么使用LIKE来实现就会显得十分的困难。而正则表达式就会显得十分简单。

SELECT * FROM my_user WHERE `name` REGEXP '.00'; // 匹配包含整百的名字,如100,200,300等等

表达式.00里面的点,代表的任意字符。也就是无论是1还是2还是9,或者是字母什么的都可以匹配,匹配任意。

1d63047295a8f46c943d20c739c1cf80.png

SELECT * FROM my_user WHERE `name` REGEXP '[0-9]'; // 匹配所有名字里面包含数字的用户

e39fd43ea3c9232232891125948d49a4.png

是不是来

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值