MySQL中使用replace、regexp进行正则表达式替换的用法分析
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL中使用replace、regexp进行正则表达式替换的用法分析,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3292字,纯文字阅读大概需要5分钟。
内容图文
![MySQL中使用replace、regexp进行正则表达式替换的用法分析](/upload/InfoBanner/zyjiaocheng/539/5013e2541df44c379902966f3b9c85dc.jpg)
本文实例讲述了MySQL中使用replace、regexp进行正则表达式替换的用法。分享给大家供大家参考,具体如下:
今天一个朋友问我,如果将数据库中查到的类似于“./uploads/110100_cityHotel_北京富豪华宾馆.jpg”这样的格式都修改为“./uploads/110100cityHotel北京富豪华宾馆.jpg”这样的格式。我本人是没有这样处理过数据的,但是我知道mysql是可以使用replace做到的,而且正则表达式也可以做到。
如何做呢?
我们只需要这样一条语句即可,
代码如下:
update master_data.md_employee set name=replace(name,"_",'') where id = 825;
-- 注replace(字段名,"需要替换的字符","替换的字符"),这样即可。
在Mysql中,replace和regexp主要是通过sql语句实现数据的替换。
我们先来说说replace 的具体用法。
mysql replace用法
1.replace into
代码如下:
replace into table (id,name) values('1′,'aa'),('2′,'bb')
此语句的作用是向表table中插入两条记录。如果主键id为1或2不存在
就相当于
代码如下:
insert into table (id,name) values('1′,'aa'),('2′,'bb')
如果存在相同的值则不会插入数据
2.replace(object,search,replace)
把object中出现search的全部替换为replace
代码如下:
select replace('www.gxlcms.com','w','Ww')
例:把表table中的name字段中的aa替换为bb
代码如下:
update table set name=replace(name,'aa','bb')
由MySQL提供的模式匹配的其它类型是使用扩展正则表达式。
当你对这类模式进行匹配测试时,使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,它们是同义词)。
扩展正则表达式的一些字符是:
· ‘.'匹配任何单个的字符。
· 字符类“[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”、“b”或“c”。为了命名字符的范围,使用一个“-”。“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字。
· “ * ”匹配零个或多个在它前面的字符。例如,“x*”匹配任何数量的“x”字符,“[0-9]*”匹配任何数量的数字,而“.*”匹配任何数量的任何字符。
如果REGEXP模式与被测试值的任何地方匹配,模式就匹配(这不同于LIKE模式匹配,只有与整个值匹配,模式才匹配)。
为了定位一个模式以便它必须匹配被测试值的开始或结尾,在模式开始处使用“^”或在模式的结尾用“$”。
为了说明扩展正则表达式如何工作,下面使用REGEXP重写上面所示的LIKE查询:
1.为了找出以“d”开头的名字,使用“^”匹配名字的开始:
代码如下:
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个“.”实例在两者之间:
代码如下:
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的用法,对于深入的学习,我们会在之后的文章会将具体的例子以及用法写出
以上就是MySQL中使用replace、regexp进行正则表达式替换的用法分析的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是互联网集市为您收集整理的MySQL中使用replace、regexp进行正则表达式替换的用法分析全部内容,希望文章能够帮你解决MySQL中使用replace、regexp进行正则表达式替换的用法分析所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。