下面的update语句执行的是把www.test.com中的test替换为abc
程序代码
例句:
Update test SET url= REPLACE('www.test.com','test', 'abc' ) Where url REGEXP www.test.com;
如果在记录中,有类似
www.test.com
www.test1.com
www.test2.com
要将这些记录都变成www.abc.com则执行sql语句如下
Update test SET url= REPLACE('www.test.com','test', 'abc' ) Where url REGEXP '^(www.test)';
正则是非常灵活的,但是有非常复杂的情况,正则的效率不一定高于其他的方法,不一定要死抱着一颗树,有时候尝试新的方法或许会学到更多的东西。
为了说明扩展正则表达式如何工作,下面使用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和regxp的用法,如果想深入的学习,请关注我,我在之后的文章会将具体的例子以及用法写出,(*^__^*) 嘻嘻……
如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛