一、准备实验环境

1.1 创建表:

CREATE TABLE `test_tb` (

`id` int(10) unsigned NOT NULL auto_increment COMMENT &39;主键自增&39;,

`name` char(30) default NULL COMMENT &39;姓名&39;,

`address` char(60) default NULL COMMENT &39;地址&39;,

`country` char(200) default NULL COMMENT &39;国家&39;,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT=&39;测试表&39;

1.2 插入数据:

insert into test_tb(name,address,country) values

(&39;zhangsan&39;,&39;北京 朝阳区&39;,&39;中国&39;),

(&39;lisi&39;,&39;上海 浦东区&39;,&39;中国&39;),

(&39;wangwu&39;,&39;郑州金水区&39;,&39;中国&39;),

(&39;zhaoliu&39;,&39;香港九龙&39;,&39;中国香港&39;),

(&39;Q7&39;,&39;加州牛肉&39;,&39;美国&39;),

(&39;wangba&39;,&39;新九州岛&39;,&39;日本&39;)

二、查询替换

2.1 将address字段里的 “区” 替换为 “呕” 显示,如下

select *,replace(address,&39;区&39;,&39;呕&39;) AS rep

from test_tb

2.2 将address字段里的 “九” 替换为 “十” 显示,如下

select *,replace(address,&39;九&39;,&39;十&39;) AS rep

from test_tb

where id in (4,6)

总结:联想到前面有讲过 使用IF(expr1,expr2,expr3) 及 CASE...WHEN...THEN...END 可以实现查询结果的别名显示,

但区别是:这两者是将查询结果值做整体的别名显示,而replace则可以对查询结果的局部字符串做替换显示(输出)。

三、更新替换

3.1 将address字段里的 “东” 替换为 “西” ,如下

update test_tb set address=replace(address,&39;东&39;,&39;西&39;) where id=2

总结:对字段中局部字符串做更新替换。

四、插入替换

4.1 将id=6的name字段值改为wokou

replace into test_tb VALUES(6,&39;wokou&39;,&39;新九州岛&39;,&39;日本&39;)

总结:向表中“替换插入”一条数据,如果原表中没有id=6这条数据就作为新数据插入(相当于insert into作用);如果原表中有id=6这条数据就做替换(相当于update作用)。对于没有指定的字段以默认值插入。