MySQL中使⽤replace、regexp进⾏正则表达式替换的⽤
法分析
本⽂实例讲述了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⽤法
复制代码代码如下:
regexp likereplace into table (id,name) values('1′,'aa'),('2′,'bb')
此语句的作⽤是向表table中插⼊两条记录。如果主键id为1或2不存在
就相当于
insert into table (id,name) values('1′,'aa'),('2′,'bb')
如果存在相同的值则不会插⼊数据
把object中出现search的全部替换为replace
select replace('www.jb51','w','Ww')
—>WwWwWw.jb51
例:把表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款⾮常⽅便的正则表达式⼯具供⼤家参考使⽤:
更多关于MySQL相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》及《》
希望本⽂所述对⼤家MySQL数据库计有所帮助。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。