MySQL正则表达式检索数据

目录

一、使用正则表达式进行基本字符匹配

1.使用regexp关键字

2.使用正则表达式  . 

二、进行OR匹配

1.为搜索两个串之一,使用   |  

2.匹配几个字符之一[]

3.匹配范围

 4.匹配特殊字符


过滤数据允许使用匹配、比较、通配符操作来寻找数据,但是随着过滤条件的复杂性增加,WHERE子句本身的复杂性也有必要增加。

正则表达式就是用来匹配文本的特殊字符串(字符集合)。如果想从一个文本文件中提取出来电话号码就可以使用正则表达式。所有种类的程序设计语言、文本编辑器、操作系统等都支持正则表达式。

一、使用正则表达式进行基本字符匹配

示例:在列phone中寻找包含666的所有行

1.使用regexp关键字

输入:select phone from t_user where phone regexp '666' order by phone;

输出:

 以上例子关键字like被regexp替代,看上去非常像like的语句,但是这个语句告诉mysql:regexp后所跟的东西为正则表达式处理。

2.使用正则表达式 

是正则表达式语言中一个特殊的字符,它表示匹配任意一个字符。

示例:找出表中email列中包含“.com”的行

输入:select email from t_user where email regexp '.com' order by email;

输出:

 注意:MySQL中的正则表达式匹配不区分大小写(即,大写、小写 都匹配)。为区分大小写,可以使用BINARY关键字,如:where name regepx binary 'JanePack'。

二、进行OR匹配

1.为搜索两个串之一,使用   |  

示例:寻找表t_user中phone列包含6 或 8 的列

输入:select phone from t_user where phone regexp '6|8' order by phone;

输出:

| 为正则表达式的OR符号。它表示匹配其中之一,因此6和8都匹配并返回。类似于select语句中的OR语句。

2.匹配几个字符之一[]

如果只想匹配特定的字符,可以通过一组 [和] 括起来的字符来完成。

示例:寻找email列中  .com前是3和q的行

输入:select email from t_user where email regexp '[q3].com' order by phone;

输出:

 []是另一种形式的OR语句。正则表达式[q3].com是[q|3].com的缩写,两个都可以使用。但是后者需要用[]来定义OR语句查找。

3.匹配范围

集合可以用来定义要匹配的一个或多个字符。例如[123456789],为了简化这种类型的集合,可以使用 - 来定义一个范围,比如:[1-9],且匹配范围不一定是数值的,也可以是[a-z]。

示例:在t_user表中寻找id在1-4范围内的name行和email行

输入: select name,email from t_user where id regexp '[1-4]';4]';

输出:

 4.匹配特殊字符

为了匹配特殊字符,必须用 \\ 作为前导。\\-表示查找- ,\\.表示查找 . 。

示例:找出t_user表中email列中有.的name行

输入:select name from t_user where email regexp '\\.' order by name;

输出:

 更多 \\ 来引用的字符:

\\f

换页

\\n换行
\\r回车
\\t制表
\\v纵向制表

注意:为了匹配反斜杠(\)字符本身,需要使用(\\\)。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/23861.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS前端面试

文章目录 rem、em、vh、px各自代表的含义?盒模型poison 定位属性flex属性让元素水平垂直居中页面适配的方法有哪些 rem、em、vh、px各自代表的含义? px:绝对单位,页面按精确像素展示 em:相对单位,基准点为…

MySQL 的事件调度器

MySQL 的事件调度器可以通过以下方式进行管理: 1】查看事件调度器的状态 SHOW VARIABLES LIKE event_scheduler;2】启用/禁用事件调度器 SET GLOBAL event_scheduler ON;SET GLOBAL event_scheduler OFF; 注意:启用/禁用事件调度器需要具有 SUPE…

RabbitMQ(二) - RabbitMQ与消息发布确认与返回、消费确认

RabbitMQ消息确认 SpringBoot与RabbitMQ整合后,对RabbitClient的“确认”进行了封装、使用方式与RabbitMQ官网不一致; 消息发布确认 生产者给交换机发送消息后、若是不管了,则会出现消息丢失; 解决方案1: 交换机接受…

Spring源码之XML文件中Bean标签的解析1

读取XML文件,创建对象 xml文件里包含Bean的信息,为了避免多次IO,需要一次性读取xml文件中所有bean信息,加入到Spring工厂。 读取配置文件 new ClassPathResource("applicationContext.xml")ClassPathResource是Sprin…

10倍提升效率,号称取代Elasticsearch?

[Manticore Search](https://github.com/manticoresoftware/manticoresearch/) 是一个使用 C 开发的高性能搜索引擎,创建于 2017 年,其前身是 Sphinx Search 。Manticore Search 充分利用了 Sphinx,显着改进了它的功能,修复了数百…

Charles抓包工具使用(一)(macOS)

Fiddler抓包 | 竟然有这些骚操作,太神奇了? Fiddler响应拦截数据篡改,实现特殊场景深度测试(一) 利用Fiddler抓包调试工具,实现mock数据特殊场景深度测试(二) 利用Fiddler抓包调试工…

Linux下TCP网络服务器与客户端通信程序入门

文章目录 目标服务器与客户端通信流程TCP服务器代码TCP客户端代码 目标 实现客户端连接服务器,通过终端窗口发送信息给服务器端,服务器接收到信息后对信息数据进行回传,客户端读取回传信息并返回。 服务器与客户端通信流程 TCP服务器代码 …

etcd

文章目录 etcd单机安装设置键值对watch操作读取键过往版本的值压缩修订版本lease租约(过期机制)授予租约撤销租约keepAlive续约获取租约信息 事务基于etcd实现分布式锁原生实现官方 concurrency 包实现 服务注册与发现Go 操作 Etcd 参考 etcd etcd 是一…

02|Oracle学习(数据类型、DDL)

1. 数据类型: 通常为:字符型、数值型、日期型以及大字段型大字段型:存放大数据及文件。 存储大数据时,基本上blob就能满足。 2. DDL(数据库定义语言) 主要包括对数据库对象的创建、删除及修改的操作。…

2.文件的逻辑结构

第四章 文件管理 2.文件的逻辑结构 顺序文件采用顺序存储则意味着各个逻辑上相邻的记录在物理上也是相邻的存储的。所以如果第0号记录的逻辑地址为0的话,则i号记录的逻辑为i *L。 特别的如果这个定长记录的顺序文件采用串结构,也就是这些记录的顺序和他…

go 结构体 - 值类型、引用类型 - 结构体转json类型 - 指针类型的种类 - 结构体方法 - 继承 - 多态(interface接口) - 练习

目录 一、结构体 1、python 与 go面向对象的实现: 2、初用GO中的结构体:(实例化一个值类型的数据(结构体)) 输出结果不同的三种方式 3、实例化一个引用类型的数据(结构体) 4、…

使用vscode+ssh免密远程Linux

使用vscodessh免密远程Linux 使用 SSH 密钥对:使用 SSH Agent:ssh-agent的使用场景 使用 SSH 密钥对: 确保你的本地机器上已经生成了 SSH 密钥对。如果没有,请使用以下命令生成密钥对: ssh-keygen -t rsa这将在 ~/.ssh…

Tomcat添加第三方jar包、如何在IDEA中启动部署Web模板

前言:公司最近维护老项目,是最原始的web项目,servlet和jsp结合的web项目,启动的时候配置了好几遍, 都起不来,很折磨人,这个文档比较全配置一遍准备工作 首先 拉取代码: git clone xxx.git ,如需要别的操作,自行baidu 也可以在idea中拉取第一步File ->Project Structure->…

Redis两种持久化方案RDB持久化和AOF持久化

Redis持久化 Redis有两种持久化方案: RDB持久化AOF持久化 1.1.RDB持久化 RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启…

VSCode插件Todo Tree的使用

在VSCode中安装插件Todo Tree。按下快捷键ctrlshiftP,输入setting.jspn,选择相应的配置范围,我们选择的是用户配置 Open User Settings(JSON),将以下代码插入其中。 //todo-tree 标签配置从这里开始 标签兼容大小写字母(很好的功…

html2canvas以及new QRCode生成带有二维码的海报的问题

全局定义new QRCode var posterQrCode new QRCode(document.getElementById("qrcode"), {// text: data,width: 82,height: 82,correctLevel: 3 // 解决二维码识别不高的问题}); 取消修改的时候给posterQrCode传值posterQrCode.makeCode(data);解决二维码海报弹框出…

Spring Boot 集成Seata

Seata的集成方式有: 1. Seata-All 2. Seata-Spring-Boot-Starter 3. Spring-Cloud-Starter-Seata 本案例使用Seata-Spring-Boot-Starter演示: 第一步:下载Seata 第二步:为了更好看到效果,我们将Seata的数据存储改…

linuxARM裸机学习笔记(2)----汇编LED灯实验

MX6ULL 的 IO IO的复用功能 这里的只使用了低五位,用来配置io口,其中bit0~bit3(MUX_MODE)就是设置 GPIO1_IO00 的复用功能的,GPIO1_IO00 一共可以复用为 9种功能 IO,分别对应 ALT0~ALT8。每种对应了不同的功能 io的属性配置 HY…

SolidWorks 3D Interconnect介绍

目前市面上有的三维设计软件有很多,如UG、Pro/E、CATIA等,而且每个三维设计软件都会生成自己文件格式。由于产品设计的原因,我们避免不了的会需要去使用不同三维设计软件的文件,这对于工程师来说其实是一件比较麻烦的事。 为什么…

代码随想录第38天 | 动态规划理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

动态规划理论基础 如果某一问题有很多重叠子问题,使用动态规划是最有效的。所以动态规划中每一个状态一定是由上一个状态推导出来的。 动态规划解题步骤: 确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定…