MySQL正则表达式:模式匹配、中文匹配、替换、提取字符串

2023-09-20 23:45:00

在MySQL中,使用REGEXPRLIKE操作符进行正则表达式匹配,而使用NOT REGEXPNOT RLIKE操作符进行不匹配。
一些常用的MySQL正则表达式语法:

匹配字符:

.:匹配任意字符(除了换行符)。
[]:匹配方括号中的任意字符。
[^]:匹配不在方括号中的任意字符。

匹配重复:
*:匹配零个或多个前面的字符。
+:匹配一个或多个前面的字符。
?:匹配零个或一个前面的字符。
{n}:匹配恰好n个前面的字符。
{n,}:匹配至少n个前面的字符。
{n,m}:匹配至少n个,但不超过m个前面的字符。

匹配位置:
^:匹配字符串的开头。
$:匹配字符串的结尾。
[]:匹配方括号中的任意字符。

其他:
\d:匹配任意数字。
\D:匹配任意非数字字符。
\s:匹配任意空白字符(包括空格、制表符、换行符等)。
\S:匹配任意非空白字符。
\w:匹配任意字母、数字或下划线。
\W:匹配任意非字母、数字或下划线字符。

REGEXP

SELECT * FROM `student` WHERE name REGEXP "^张";
SELECT * FROM `student` WHERE name REGEXP "三$";
SELECT * FROM `student` WHERE name REGEXP "[张李王][三四五]"

MySQL中的REGEXP操作符支持使用正则表达式进行模式匹配。然而,MySQL的REGEXP操作符在处理中文字符时可能会遇到一些问题,因为它的实现是基于字节的,而不是基于字符的。

在MySQL中,一个中文字符通常被存储为三个字节,而REGEXP操作符在处理时,可能会将一个多字节字符视为多个字节进行处理,从而导致匹配不正确。

RLIKE

RLIKE使用的是MySQL的正则表达式语法,而REGEXP使用的是POSIX风格的正则表达式语法。在RLIKE中,正则表达式需要被包含在RLIKE操作符中,而在REGEXP中,正则表达式需要被包含在REGEXP或REGEXP_LIKE函数中。

SELECT * FROM `article` WHERE content RLIKE "兔子王"

REGEXP_LIKE

SELECT * FROM `article` WHERE REGEXP_LIKE(content, "兔子王")

如果你需要在MySQL中使用正则表达式过滤中文字符,可以考虑使用MySQL的REGEXP_LIKE函数,它支持基于字符的正则表达式匹配。
MySQL在版本5.7及更早的版本中没有原生支持REGEXP_LIKE函数。然而,从MySQL 8.0版本开始,引入了REGEXP_LIKE函数,你可以在查询中使用它进行正则表达式匹配。

以下是MySQL版本与REGEXP_LIKE支持的对应关系:

MySQL 8.0及以上版本:支持REGEXP_LIKE函数。
MySQL 5.7及更早版本:不支持REGEXP_LIKE函数。
如果你使用的是MySQL 5.7及更早版本,并且需要使用正则表达式匹配功能,你可以考虑升级到MySQL 8.0版本或更高版本,或者使用其他方式实现正则表达式匹配,例如使用编程语言中的正则表达式库进行预处理或后处理。

替换字符串:REGEXP_REPLACE

使用REGEXP_REPLACE函数来替换字符串中匹配正则表达式的部分。

SELECT REGEXP_REPLACE(content, "兔子王", "小白兔") FROM `article`

分离提取字符串:REGEXP_SUBSTR

使用REGEXP_SUBSTR函数来分离提取字符串中匹配正则表达式的部分。

SELECT REGEXP_SUBSTR(content, "兔子王") FROM `article`
更多推荐

第一章 计算机网络基础

目录1.1网络体系结构1.1.1OSI/RM七层参考模型1.1.2OSI/RM和TCP/IP模型的比较1.1.3五层协议的体系结构1.1.4计算机1向计算机2发送数据过程1.1.5TCP/IP体系结构的具体实现1.2网络设备概述1.2.1互联设备与OSI的对应关系1.2.2集线器(HUB)1.2.3网桥(Bridge)

酷开系统——酷开科技挖掘下沉市场的重要利器

纵观整个互联网的发展历程,我们经历从搜索时代到电子商务时代,再从社交网络时代到近几年兴起的兴趣网络时代。而在当下的兴趣网络时代,面对多元化、同质化的产品,价值文化成为品牌和消费者建立连接的关键。目前,互联网也已进入价值网络时代。而具有强曝光的互联网智能大屏天然是塑造品牌形象、助力品牌与消费者进行文化价值共创的重要载体。

做了五年功能测试麻木了,现在想进阶自动化测试该从哪里开始?

什么是自动化测试?做测试好几年了,真正学习和实践自动化测试一年,自我感觉这一个年中收获许多。一直想动笔写一篇文章分享自动化测试实践中的一些经验。终于决定花点时间来做这件事儿。首先理清自动化测试的概念,广义上来讲,自动化包括一切通过工具(程序)的方式来代替或辅助手工测试的行为都可以看做自动化,包括性能测试工具(loadr

云端IDE的技术选型1

背景考虑到以下几点,准备给低代码平台开发一套云端的IDE:桌面端IDE:vscode或idea,都有需要开发人员安装ide,以及配置环境很多时候,配置开发环境是个非常曲折过程,经常出现版本不匹配,即使有文档,也经常出现文档没有及时更新等问题同时,配置环境又是一个完全不产出任何价值的过程希望有一套云端的开发环境,即开即用

windows下mysql的高可用方案

PS:理论上linux下也可以使用这种方案环境准备:首先准备两台电脑,全部安装MySQL,然后分别查看一下ip地址,我的两个ip分别是:192.168.25.134(简称134)192.168.25.135(简称135)配置:my.ini一、配置两个MySQL的my.ini如下:必須卸载mysqld后面134my.in

ROS相机内参标定详细步骤指南

作者:HermanYe@Galbot@Auromix版本:V1.0测试环境:Ubuntu20.04、ROS1Noetic更新日期:2023/09/14注1:本文内容中的硬件由@Galbot提供支持。注2:@Auromix是一个机器人爱好者开源组织。注3:由于笔者水平有限,以下内容可能存在错误。注4:本文中直接引用各包官

python中的字符串也是可迭代对象吗?

python中的字符串也是可迭代对象吗?━━━━━━━━━━━━━━━━━━━━━━是的,Python中的字符串是可迭代对象。这意味着你可以像处理列表或元组那样处理字符串。例如,你可以使用for循环遍历字符串中的每个字符,或者使用in运算符检查一个字符串是否包含另一个字符串。这些都是Python中可迭代对象的特性。━━

Matlab论文插图绘制模板第114期—带图形标记的图

之前的文章中,分享了Matlab带线标记的图:带阴影标记的图:带箭头标记的图:进一步,分享一下带图形标记的图,先来看一下成品效果:特别提示:本期内容『数据+代码』已上传资源群中,加群的朋友请自行下载。有需要的朋友可以关注同名公号【阿昆的科研日常】,后台回复关键词【绘图桶】查看加入方式。模板中最关键的部分内容:1.数据准

32:TX Text Control ActiveX/ASP.NET/WinForms/WPF Crack

TXTextControlActiveX32.0添加操作“普通”样式表的能力。2023年9月14日-15:38新版本特征脚注-在文档中插入与MicrosoftWord兼容的脚注。脚注是一种文字处理功能,允许用户在页面底部插入附加信息。可编辑的[普通]样式表-添加了操作[普通]样式的功能。这允许您更改文档的根样式,该样式

1. js中let、var、const定义变量区别与方式

1声明语法varupperA='A';letupperB='B';constupperC='C';只声明不初始化的结果,【const定义的常量不可以修改,而且必须初始化】//var声明变量varupperA;console.log('打印大写的A:%s',upperA);//结果:打印大写的A:undefined//l

影响软文效果的三大因素,一定要牢记

在信息技术发展速度越来越快的今天,企业宣传时已经不再局限于传统的硬广,开始利用软文来提升曝光率,软文作为一种全新的宣传手段,具有覆盖面广、成本低且持续时间长,但是有三大因素稍不注意就会影响软文发布的效果,下面就让媒介盒子告诉大家是哪些因素。一、 软文主题是否明确许多企业为了提高热度,经常会在软文中堆砌过多的关

热文推荐