加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql入门MySQL中使用replace、regexp进行正则表达式替换的用法

发布时间:2020-12-12 01:20:39 所属栏目:MySql教程 来源:网络整理
导读:《Mysql入门MySQL中使用replace、regexp进行正则表达式替换的用法分析》要点: 本文介绍了Mysql入门MySQL中使用replace、regexp进行正则表达式替换的用法分析,希望对您有用。如果有疑问,可以联系我们。 本篇章节讲解MySQL中使用replace、regexp进行正则

《Mysql入门MySQL中使用replace、regexp进行正则表达式替换的用法分析》要点:
本文介绍了Mysql入门MySQL中使用replace、regexp进行正则表达式替换的用法分析,希望对您有用。如果有疑问,可以联系我们。

本篇章节讲解MySQL中使用replace、regexp进行正则表达式替换的用法.分享给大家供大家参考,具体如下:MYSQL教程

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

如何做呢?MYSQL教程

我们只需要这样一条语句即可,
MYSQL教程

代码如下: update master_data.md_employee set name=replace(name,"_",'') where id = 825;

-- 注replace(字段名,"需要替换的字符","替换的字符"),这样即可.MYSQL教程

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

我们先来说说replace 的具体用法.MYSQL教程

mysql replace用法 MYSQL教程

1.replace into
MYSQL教程

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

就相当于
MYSQL教程

代码如下: insert into table (id,'bb')
如果存在相同的值则不会插入数据

2.replace(object,search,replace)MYSQL教程

把object中出现search的全部替换为replace
MYSQL教程

代码如下: select replace('www.aspzz.cn','w','Ww')
―>WwWwWw.aspzz.cn

例:把表table中的name字段中的aa替换为bb
MYSQL教程

代码如下: update table set name=replace(name,'aa','bb')
由MySQL提供的模式匹配的其它类型是使用扩展正则表达式.

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

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

? ‘.'匹配任何单个的字符. MYSQL教程

? 字符类“[...]”匹配在方括号内的任何字符.例如,“[abc]”匹配“a”、“b”或“c”.为了命名字符的范围,使用一个“-”.“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字. MYSQL教程

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

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

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

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

1.为了找出以“d”开头的名字,使用“^”匹配名字的开始:
MYSQL教程

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

为了找出包含正好5个字符的名字,使用“^”和“$”匹配名字的开始和结尾,和5个“.”实例在两者之间:
MYSQL教程

代码如下: SELECT id,name FROM master_data.md_employee WHERE name REGEXP '^.....$';
你也可以使用“{n}”“重复n次”操作符重写前面的查询:
代码如下: SELECT id,name FROM master_data.md_employee WHERE name REGEXP '^.{5}$';
这些知识一些简单的mysql的replace和regexp的用法,对于深入的学习,我们会在之后的文章会将具体的例子以及用法写出

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

JavaScript正则表达式在线测试工具:
http://tools.aspzz.cn/regex/javascriptMYSQL教程

正则表达式在线生成工具:
http://tools.aspzz.cn/regex/create_regMYSQL教程

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

希望本文所述对大家MySQL数据库计有所帮助.MYSQL教程

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读