MySQL中使用replace、regexp进行正则表达式替换的用法分析
作者:张佳美 发布时间:2024-01-15 13:34:02
本文实例讲述了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.jb51.net','w','Ww')
—>WwWwWw.jb51.net
例:把表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的用法,对于深入的学习,我们会在之后的文章会将具体的例子以及用法写出
PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:
JavaScript正则表达式在线测试工具:
http://tools.jb51.net/regex/javascript
正则表达式在线生成工具:
http://tools.jb51.net/regex/create_reg
希望本文所述对大家MySQL数据库计有所帮助。
猜你喜欢
- 前言本人是位大二在读在校学生,专业为地理信息科学,因跟老师一起做项目,所以有幸接触nc数据转换为tif数据,因为在这件事情上也遇过不少坑,也
- 说明:通过随机产生密码,然后将密码EMail给注册用户,你可以确认用户的EMail填写是否正确。自动产生的密码往往安全性更高,同时,你可以过
- 用的昨天刚接触到的库,在windows下通过paramiko来登录linux系统并执行了几个命令,基本算是初试成功,后面会接着学习的。代码:
- 如 现有字符串 "[]aseabcd[12345]ddxabcdsx[]",要截取"abcd[" 和
- 本文实例讲述了Python 类属性与实例属性,类对象与实例对象用法。分享给大家供大家参考,具体如下:demo.py(类属性,所有实例对象共用
- 数据分析师肯定每天都被各种各样的数据数据报表搞得焦头烂额,老板的,运营的、产品的等等。而且大部分报表都是重复性的工作,这篇文章就是帮助大家如
- 撰写时间:2017.5.23一维数组1.numpy初始化一维数组a = np.array([1,2,3]);print a.shape输出的
- 此文档是一位高手同事Hewei的原创实践总结,过程真是精彩,最后修复损坏数据库取得圆满效果,值得收藏的一篇好文章。前几天因为mysql数据库
- 折纸是日本著名的折叠纸张的艺术。折纸艺术只是使用一些不同的折叠方式,却能被用各种各样的方式组合成错综复杂的设计。而受折纸启发的logo设计则
- 在php中实现验证码还是很方便的,关键点在于掌握php gd库与session的用法。纵观网上php 生成验证码的例子,无不是php gd库
- 在日常的测试工作中,我们的测试用例一般都是保存在Excel文件中,当然也有一些公司会使用Xmind来编写测试用例,那么为什么我们在这里只是讲
- enum 是一组绑定到唯一常数值的符号名称,并且具备可迭代性和可比较性的特性。我们可以使用 enum 创建具有良好定义的标识符,而不是直接使
- 本文实例讲述了Python设计模式之命令模式原理与用法。分享给大家供大家参考,具体如下:命令模式(Command Pattern):将请求封
- 数据库性能优化普遍采用集群方式,oracle集群软硬件投入昂贵,今天花了一天时间搭建基于mysql的集群环境。主要思路简单说,实现mysql
- 安装pip install pyshp引入import shapefile读取sf=shapefile.Reader("{路径名}
- 本文实例讲述了Python线性拟合实现函数与用法。分享给大家供大家参考,具体如下:1. 参考别人写的:#-*- coding:utf-8 -
- 尾递归是一种特殊的递归形式,它在递归调用时不会产生新的栈帧,从而避免了栈溢出的问题。Python并没有对尾递归进行优化,但我们可以通过一些技
- 回顾一下已经了解的数据类型:int/str/bool/list/dict/tuple还真的不少了.不过,python是一个发展的语言,没准以
- 前言:目前在研究易信公众号,想给公众号增加一个获取个人交通违章的查询菜单,通过点击返回查询数据。以下是实施过程。一、首先,用火狐浏览器打开X
- 一、uni.navigateTo(OBJECT)保留当前页面,跳转到应用内的某个页面,使用uni.navigateBack可以返回到原页面u