MySQL中正则表达式如何使用

前言

有时候使用mysql进行数据库查询数据的时候,like查询存在局限性,这时候就可以使用mysql中的正则表达式查询的方式。

正则表达式是用来匹配文本的特殊的串(字符集合),将一个模式(正则表达式)与一个文本串进行比较。

从文本文件中提取电话号码

查找名字中间带有数字的文件

文本块中重复出现的单词

替换页面的URL为这些URL的实际链接(一个或两个正则表达式)

LIKE和REGEXP的区别

LIKE匹配整个列(like是模糊查询),如果被匹配的文本仅在列值中出现,LIKE并不会找到它,相应的行也不会返回(当然,使用通配符除外)REGEXP在列值内进行匹配,如果被匹配的匹配的文本在列值中出现,REGEXP将会找到它,相应的行将被返回,这时一个非常重要的差别(当然,如果适应定位符号^和$,可以实现REGEXP匹配整个列而不是列的子集)

例如:

查询一个表name列含有chen字符串的数据,两条sql语句如下

select * from stu_info where name like '小白';select * from stu_info where name regexp '小白';

第一条的查询结果是name值等于’小白‘的数据,而第二条的查询结果是name中包含’小白’的数据,也可以用like(模糊查询+通配符)来实现regexp查询结果。

OR进行匹配

select column from table where column regexp 'X|Y' order by column;select column from table where column regexp '[XY]test' order by column;

第一种写法会将|应用于整个串,只要字符串中有X或Y的数据,都将被检索出来

第二种写法只将[XY]应用于搜索模式的开头处

匹配范围

([])集合可以用来定义要匹配的一个或多个字符,比如[0123456789],为了简化这种类型的集合,可使用(-)来定义一个范围,即[0-9],[a-z]

匹配特殊字符

则表达式由具有特定含义的特殊字符构成;如果要匹配这些特殊字符,就需要用为前导,这种处理方式就是所谓的转义(escaping),正则表达式内具有特殊意义的所有字符都必须以这种方式转义;(为了匹配反斜杠{}字符本身,需要使用)

注意:多数正则表达式实现使用单个反斜杠转义特殊字符,以便能够使用这些字符本身,而MySQL要求两个反斜杠(MySQL自己解释一个,正则表达式库解释一个)

MySQL中正则表达式如何使用

匹配字符类

有时候需要检索出我们需要的数字、所有字母字符或所有数字字母字符等的匹配,我们可以使用预定义的字符集,称为字符类。

MySQL中正则表达式如何使用

匹配多个实例

有时候需要对匹配的数目进行更强的控制,比如:寻找所有的数,不管数中包含多少数字,或寻找一个单词并尾随一个s(如果存在)等情况,我们可以利用正则表达式中的重复元字符来完成。

MySQL中正则表达式如何使用

select column from table where column regexp '([0-9] sticks?)' order by column;

上面的正则表达式‘([0-9] sticks?)’意为:匹配([0-9]匹配任意数字,这里指匹配的数值范围,sticks?匹配stick和sticks{?使s可选,因为?匹配它前面任何字符的0或者1次出现})。

定位符

有时候为了匹配特定位置的文本,需要使用定位符,常用定位符列表如下:

MySQL中正则表达式如何使用

找出一个以一个数(包括小数点开始的数)开始的所有数值,简单搜索[0-9.]或([[:digit:].])不行,因为它将在文本内任意位置查找匹配,可以使用^定位符,如下:

select column from table where column regexp '^[0-9.]' order by column;

^有两种用法

在集合中(用[和]定义),用它来否定该集合

用来指串的开始处

使regexp和like起相同作用:like匹配整串二regexp匹配子串,可以利用定位符,用^开始每个表达式,用$结束每个表达式,就可以使regexp和like作用一样。

查询admin表中的group字段,数据格式为:1,2,3;4,5,6;1,87,101

例如查询101:

select * from xin_admin where `group` REGEXP '[,|;]?101[,|;]?';

附:Mysql字符串截取 和 截取字符进行查询

一、MySQL中字符串的截取

MySQL中有专门的字符串截取函数:其中常用的有两种:substring_index(str,delim,count) 和concat

1.substring_index(str,delim,count) 函数的使用较为普遍。

函数括号里面的依次为:要分隔截取的字符串(如:”aaa_bbb_ccc”)、分隔符(如:“_”)、位置(表示第几个分隔符处,如:“1”)。

count为正数,那么就是从左边开始数,函数返回第count个分隔符的左侧的字符串;

count为负数,那么就是从右边开始数,函数返回第count个分隔符右边的所有内容;

count可以为0,返回为空。

例子:substring_index(“aaa_bbb_ccc”,”_”,1) ,返回为 aaa;
         substring_index(“aaa_bbb_ccc”,”_”,2) ,返回为 aaa_bbb;
         substring_index(substring_index(“aaa_bbb_ccc”,”_”,-2),”_”,1) ,返回为 bbb;

2.concat是连接几个字符串

例子:concat(‘m’,’y’,’s’,’q’,’l’);

返回:mysql

二、依据表中的某个字段查询包含有这个字符的所有数据

1.find_in_set:SELECT * FROM user WHERE find_in_set(‘吴’,name);

查询user表中所有name包含“吴”的数据

2.REGEXP:SELECT * FROM user WHERE name REGEXP ‘(‘吴’|‘刘’)’;

使用正则,查询包含刘或者吴的数据

以上就是MySQL中正则表达式如何使用的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/162234.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年10月31日 21:26:31
下一篇 2025年10月31日 21:27:24

相关推荐

  • php数据库如何计算数据量 php数据库统计行数的高效方法

    使用COUNT(*)统计行数最直接,适用于小表;大表可采用SHOW TABLE STATUS获取近似值或用Redis维护计数器;带条件统计需配合索引提升性能;分页场景可用LIMIT+1判断下一页,避免精确计数以提高效率。 在PHP中操作数据库统计行数时,效率和准确性是关键。尤其是面对大量数据时,选择…

    2025年12月12日
    000
  • php数据库如何实现读写分离 php数据库负载均衡的架构设计

    读写分离通过将数据库读写操作分发至不同实例提升性能,PHP中可采用手动路由、中间件或框架支持实现;结合负载均衡策略如轮询或ProxySQL,能有效分散读请求,但需注意主从延迟、事务处理及连接管理等问题。 在高并发的Web应用中,数据库往往是性能瓶颈的关键点。为了提升数据库的读写效率和系统整体稳定性,…

    2025年12月12日
    000
  • PHP数据如何连接MySQL数据库 PHP数据数据库交互的核心方法

    PHP连接MySQL常用MySQLi和PDO,推荐使用PDO因其支持多种数据库、安全性高。首先建立数据库连接,PDO通过try-catch捕获异常,MySQLi则直接实例化;接着执行增删改查操作,如INSERT插入数据、SELECT查询结果,均应使用预处理语句防止SQL注入;最后正确关闭连接。掌握这…

    2025年12月12日
    000
  • PHP字符串怎么操作_PHP字符串处理常用方法

    掌握PHP字符串操作是开发关键,1. 使用点号连接字符串或双引号插入变量;2. 用strlen()和mb_strlen()获取长度,substr()和mb_substr()截取子串;3. strpos()查找子串位置,str_replace()替换内容;4. strtoupper()、strtolo…

    2025年12月12日
    000
  • php数据库如何连接MySQL数据库 php数据库与MySQL交互的完整流程

    PHP连接MySQL数据库并进行交互,是动态网站开发中最基础也是最重要的操作之一。整个流程包括:连接数据库、执行SQL语句、处理结果、关闭连接。下面详细介绍完整流程和常用方法。 1. 使用 mysqli 扩展连接 MySQL mysqli 是 PHP 中推荐使用的 MySQL 扩展,支持面向对象和过…

    2025年12月12日
    000
  • php数据库如何实现增删改查 php数据库基本操作的综合教程

    使用PDO实现PHP数据库操作,需通过预处理语句执行增删改查。1. 连接数据库时设置DSN和异常模式;2. 插入数据使用prepare与execute防止SQL注入;3. 查询用fetchAll或fetch获取结果;4. 更新和删除同样采用预处理绑定参数,确保安全。核心是始终使用预处理机制避免拼接S…

    2025年12月12日
    000
  • php数据库如何实现数据验证 php数据库约束条件的设置方法

    答案:PHP开发中需结合应用层验证与数据库约束确保数据完整性。1. PHP使用filter_var()、正则表达式和自定义逻辑验证输入;2. 数据库通过主键、唯一、非空、默认值、外键及检查约束强制数据规则,防止脏数据写入。 在PHP开发中,数据验证和数据库约束是确保数据完整性和安全性的关键环节。虽然…

    2025年12月12日
    000
  • php调用数据可视化_php调用ECharts生成统计图表

    答案:PHP与ECharts结合实现数据可视化需通过PHP输出JSON数据,前端用AJAX获取并渲染图表。具体步骤包括引入ECharts库、创建PHP接口返回格式化数据(如月销售额),前端初始化图表容器并通过fetch请求数据,最后配置option渲染柱状图;扩展建议含使用PDO防注入、添加错误处理…

    2025年12月12日
    000
  • php脚本怎么用_PHP脚本编写与使用指南

    首先搭建PHP环境,推荐使用XAMPP等集成工具;然后编写嵌入HTML的PHP代码,如,存为.php文件并放入htdocs目录;通过浏览器访问localhost对应路径即可运行;PHP常用于表单处理、数据库操作、文件读写和会话管理;也可在命令行直接执行php脚本,适用于定时任务。注意配置错误显示与安…

    2025年12月12日
    000
  • php数据库如何批量插入数据 php数据库高效数据导入的方案

    使用多值INSERT、事务提交、LOAD DATA INFILE和预处理语句可高效批量插入数据。小批量用多值INSERT(每批500~1000条),大批量优先选LOAD DATA INFILE以获得最佳性能,注重安全则结合PDO预处理与事务,避免SQL注入并减少解析开销。同时需分批处理以防内存溢出和…

    2025年12月12日
    000
  • 怎么下载安装php_PHP下载安装步骤与版本选择

    答案:选择合适PHP版本并根据操作系统安装。建议使用PHP 8.3等新版,通过官方包或集成环境(如XAMPP)在Windows安装,Linux则用apt命令安装,并通过phpinfo()测试成功。 下载和安装 PHP 主要是根据你的操作系统和使用场景来决定的。如果你是开发人员,想在本地运行 PHP …

    2025年12月12日
    000
  • PHP代码如何操作数据库存储过程_PHP调用存储过程与参数传递

    答案:PHP通过PDO或MySQLi调用MySQL存储过程,支持输入、输出及混合参数。1. PDO推荐使用,语法清晰安全;2. 无参过程直接CALL;3. 输入参数用预处理绑定;4. 输出参数需借助用户变量@var并二次查询获取;5. MySQLi类似但灵活性较差;6. 注意防注入、权限和结果集处理…

    2025年12月12日
    000
  • PHP用户登录验证_PHP会话管理与登录状态检查函数

    答案:通过session_start()启动会话,验证用户登录后设置会话变量,使用checkLogin()函数检查登录状态,logoutUser()函数清除会话并销毁,结合密码哈希、XSS防护和安全Cookie设置,实现安全的登录与会话管理。 用户登录验证和会话管理是PHP开发中保障网站安全的核心环…

    2025年12月12日
    000
  • 手机怎么打开php文件_手机浏览或运行PHP文件的可行方法

    手机无法直接运行PHP文件,因PHP需服务器环境解析。可通过文本编辑器(如纯纯写作、MT Manager)查看代码;使用KSWEB(Android)或iPHP(iOS)在手机搭建本地服务器运行;借助paiza.IO等在线工具测试代码;或将文件上传至真实服务器,通过公网URL访问结果。核心是PHP必须…

    2025年12月12日
    000
  • mysql触发器如何使用_PHP中调用mysql触发器的实现方法

    MySQL触发器是自动执行的数据库对象,当表发生INSERT、UPDATE或DELETE操作时触发。例如在orders表插入订单后,自动减少products表中的库存。通过PHP执行INSERT等操作即可间接触发,无需手动调用。只要触发器已创建并绑定到对应表的操作上,PHP只需正常进行数据库操作,M…

    2025年12月12日
    000
  • PHP连接MySQL数据库_PHP数据库连接池原理

    PHP通过mysqli或PDO连接MySQL,采用短连接模式,因请求独立导致无法复用连接,故通常不使用传统连接池。 PHP连接MySQL数据库是Web开发中常见的操作。虽然PHP本身没有内置的数据库连接池机制,但理解其连接原理和优化方式对提升应用性能至关重要。 PHP如何连接MySQL数据库 在PH…

    2025年12月12日
    000
  • php数据库如何管理大数据量 php数据库海量数据处理的策略

    处理大数据量PHP数据库应用需系统性优化:1. 通过分表分库降低单表数据量,提升查询效率;2. 合理设计索引并重构查询避免全表扫描;3. 引入Redis等缓存热点数据减少数据库压力;4. 使用消息队列异步处理耗时任务;5. 实现读写分离减轻主库负载。 处理大数据量的PHP数据库应用,关键在于优化架构…

    2025年12月12日
    000
  • 怎么用php做网站_PHP建站全流程与核心要点

    做网站用PHP是一种常见且高效的方式,尤其适合中小型项目和内容管理系统。PHP作为服务端脚本语言,配合MySQL数据库、HTML/CSS/JS前端技术,可以快速搭建功能完整的动态网站。下面从零开始梳理使用PHP建站的全流程与核心要点。 一、环境准备与开发工具 在开始写代码前,需要搭建本地开发环境: …

    2025年12月12日
    000
  • php中乱码怎么解决_PHP中文乱码问题原因与解决方法

    答案是统一编码为UTF-8。需确保PHP文件以UTF-8无BOM保存,HTML设置或PHP输出header(“Content-Type: text/html; charset=UTF-8”),数据库及连接使用utf8mb4编码,表单提交页面与处理脚本编码一致,避免不必要的编码…

    2025年12月12日
    000
  • php数据库如何优化内存使用 php数据库资源消耗的控制方法

    合理优化数据库交互可显著降低PHP内存占用。应避免全表查询,仅选取必要字段并分页或逐行读取;使用非缓冲查询防止结果集全加载;及时释放连接与资源;优化SQL语句及索引设计,减少慢查询和全表扫描,从而提升整体性能。 PHP 在处理数据库操作时,内存使用和资源消耗直接影响应用性能,尤其在高并发或大数据量场…

    2025年12月12日
    000

发表回复

登录后才能评论
关注微信