sql拾遗
1、批量替换指定字段,指定数据的方法
update 表名 set 要替换的字段名 = REPLACE(要替换的字段名,‘要替换的数据’,‘新数据’)
此处用到了REPLACE()替换函数,不妨在学习下REPLACE()的其他应用场景
1.1 创建表:
CREATE TABLE `test_tb` (
`id` int(10) unsigned NOT NULL auto_increment COMMENT '主键自增',
`name` char(30) default NULL COMMENT '姓名',
`address` char(60) default NULL COMMENT '地址',
`country` char(200) default NULL COMMENT '国家',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='测试表'
1.2 插入数据:
insert into test_tb(name,address,country) values
('zhangsan','北京 朝阳区','中国'),
('lisi','上海 浦东区','中国'),
('wangwu','郑州金水区','中国'),
('zhaoliu','香港九龙','中国香港'),
('Q7','加州牛肉','美国'),
('wangba','新九州岛','日本')

REPLACE()查询替换
把表中address字段的‘区’字换成‘驱’字
select *, replace(address,'区','驱') as a from test_tb
执行语句得到结果

REPLACE()更新替换
把表中 九 字,换成 十 字
update test_tb set address = replace (address,'九','十') where id = 4

值得注意的是,要记得添加where 条件, 不然会把表中所有的九字,替换成十字,
反之,如果想向开头那样本来就是要替换全表指定数据,就不必加条件
REPLACE()插入替换
replace into test_tb values (6,'wow','新九洲岛','日本')

之所以说是插入替换,是因为如果表中没有id=6的数据,那么会作为一条新数据插入表中,起到了
insert into的作用,如果有id=6这条数据,就会起到update的作用,替换掉指定的数据
---------------------------------------------------------------------------------------------------------------------------------------

浙公网安备 33010602011771号