数据库教程:MySQL中使用replace、regexp进行正则表达式替换的用法分析分享

本文实例讲述了MySQL中使用replace、regexp进行正则表达式替换的用法。分享给大家供大家参考,具体如下:

今天一个朋友问我,如果将数据库中查到的类似于“./uploads/110100_cityHotel_北京富豪华宾馆.jpg”这样的格式都修改为“./uploads/110100cityHotel北京富豪华宾馆.jpg”这样的格式。我本人是没有这样处理过数据的,但是我知道mysql是可以使用replace做到的,而且正则表达式也可以做到。

如何做呢?

我们只需要这样一条语句即可,
代码如下:updatemaster_data.md_employeesetname=replace(name,”_”,”)whereid=825;

–注replace(字段名,”需要替换的字符”,”替换的字符”),这样即可。

在Mysql中,replace和regexp主要是通过sql语句实现数据的替换。

我们先来说说replace的具体用法。

mysqlreplace用法

1.replaceinto
代码如下:replaceintotable(id,name)values(‘1′,’aa’),(‘2′,’bb’)
此语句的作用是向表table中插入两条记录。如果主键id为1或2不存在

就相当于
代码如下:insertintotable(id,name)values(‘1′,’aa’),(‘2′,’bb’)
如果存在相同的值则不会插入数据

2.replace(object,search,replace)

把object中出现search的全部替换为replace
代码如下:selectreplace(‘www.jb51.net’,’w’,’Ww’)
—>WwWwWw.jb51.net

例:把表table中的name字段中的aa替换为bb
代码如下:updatetablesetname=replace(name,’aa’,’bb’)
由MySQL提供的模式匹配的其它类型是使用扩展正则表达式。

当你对这类模式进行匹配测试时,使用REGEXP和NOTREGEXP操作符(或RLIKE和NOTRLIKE,它们是同义词)。

扩展正则表达式的一些字符是:

·‘.’匹配任何单个的字符。

·字符类“[…]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”、“b”或“c”。为了命免费精选名字大全符的范围,使用一个“-”。“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字。

·“*”匹配零个或多个在它前面的字符。例如,“x*”匹配任何数量的“x”字符,“[0-9]*”匹配任何数量的数字,而“.*”匹配任何数量的任何字符。

如果REGEXP模式与被测试值的任何地方匹配,模式就匹配(这不同于LIKE模式匹配,只有与整个值匹配,模式才匹配)。

为了定位一个模式以便它必须匹配被测试值的开始或结尾,在模式开始处使用“^”或在模式的结尾用“$”。

为了说明扩展正则表达式如何工作,下面使用REGEXP重写上面所示的LIKE查询:

1.为了找出以“d”开头的免费精选名字大全,使用“^”匹配免费精选名字大全的开始:
代码如下:SELECT*FROMmaster_data.md_employeeWHEREnameREGEXP’^d’;
这样的结果集是不区分大小写的,如果你想强制使REGEXP比较区分大小写,使用BINARY关键字使其中一个字符串变为二进制字符串。该查询只匹配名称首字母的小写‘d’。
代码如下:SELECT*FROMmaster_data.md_employeeWHEREnameREGEXPBINARY’^d’;
为了找出以“love”结尾的免费精选名字大全,使用“$”匹配免费精选名字大全的结尾:
代码如下:SELECTid,nameFROMmaster_data.md_employeeWHEREnameREGEXP’love$’;
为了找出包含一个“w”的免费精选名字大全,使用以下查询:
代码如下:SELECTid,nameFROMmaster_data.md_employeeWHEREnameREGEXP’w’;
既然如果一个正则表达式出现在值的任何地方,其模式匹配了,就不必在先前的查询中在模式的两侧放置一个通配符以使得它匹配整个值,就像你使用了一个SQL模式那样。

为了找出包含正好5个字符的免费精选名字大全,使用“^”和“$”匹配免费精选名字大全的开始和结尾,和5个“.”实例在两者之间:
代码如下:SELECTid,nameFROMmaster_data.md_employeeWHEREnameREGEXP’^…..$’;
你也可以使用“{n}”“重复n次”操作符重写前面的查询:
代码如下:SELECTid,nameFROMmaster_data.md_employeeWHEREnameREGEXP’^.{5}$’;
这些知识一些简单的mysql的replace和regexp的用法,对于深入的学习,我们会在之后的文章会将具体的例子以及用法写出

PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

JavaScript正则表达式在线测试工具:
https://tools.jb51.net/regex/javascript

正则表达式在线生成工具:
https://tools.jb51.net/regex/create_reg

更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL常用函数大汇总》、《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》及《MySQL数据库锁相关技巧汇总》

希望本文所述对大家MySQL数据库计有所帮助。

上述就是数据库技术:MySQL中使用replace、regexp进行正则表达式替换的用法分析分享的全部内容,如果对大家有所用处且需要了解更多关于mysql数据库学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)! 您可能感兴趣的文章:MySQL中REGEXP正则表达式使用大全mysql正则表达式LIKE通配符mysql中如何使用正则表达式查询mysql正则表达式查询含有非数字和字符的记录Mysql语法、特殊符号及正则表达式的使用详解详解MySql基本查询、连接查询、子查询、正则表达查询mysql基于正则实现模糊替换字符串的方法分析MySQL使用正则表达式进行查询操作经典实例

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/dtteaching/914028.html

(0)
上一篇 2021年10月28日
下一篇 2021年10月28日

精彩推荐