好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

mysql中replace函数的用法 - mysql数据库栏目 - 自学

##-----MySQL数据替换即replace的运用-----## #这里主要介绍一些关于replace函数的用法。关于研究这个主要是发现replace功能很强大 #对于屏蔽关键字很有用处。 #现在继续在以前的数据表中进行相关操作。 示例数据表:

mysql> select * from mytable; +----+--------+-------+ | id | name | count | +----+--------+-------+ | 1 | 张三 | 1000 | | 2 | 李四 | 500 | | 3 | 王老虎 | 100 | | 4 | 赵大 | 1000 | | 5 | 王二小 | 500 | | 6 | 三亚子 | 100 | | 7 | ?阿琼 | 1000 | | 8 | 秋水虾 | 500 | | 22 | 害人精 | 100 | +----+--------+-------+ 9 rows in set (0.00 sec) #这里有9条原始数据,下面用replace进行数据的替换: #update mytable set name=replace(name,'害人精','马屁精');

mysql> update mytable set name=replace(name,'张三','阿琼'); Query OK, 1 row affected (0.06 sec) Rows matched: 9 Changed: 1 Warnings: 0 +----+--------+-------+ | id | name | count | +----+--------+-------+ | 1 | 阿琼 | 1000 | | 2 | 李四 | 500 |

#为了更加清晰的了解replace替换的方式,这里我们让其替换多个数据: #update mytable set name=replace(name,'三','大炮'); #由于数据被更改过,里面只有一个’三‘,这里再添加几条数据: #insert into mytable(name,count) values ('三毛子','200'); #insert into mytable(name,count) values ('张三胖','250');

mysql> insert into mytable(name,count) values ('三毛子','200'); Query OK, 1 row affected (0.00 sec)

mysql> insert into mytable(name,count) values ('张三胖','250'); Query OK, 1 row affected (0.00 sec)

#现在进行替换: mysql> update mytable set name=replace(name,'三','大炮'); Query OK, 3 rows affected (0.00 sec) #这里显示改变了三条数据,找数据表中有3天带'三'数据 Rows matched: 11 Changed: 3 Warnings: 0

#结果: | 6 | 大炮亚子 | 100 | | 7 | ?阿琼 | 1000 | | 8 | 秋水虾 | 500 | | 22 | 马屁精 | 100 | | 23 | 大炮毛子 | 200 | | 24 | 张大炮胖 | 250 | +----+----------+-------+ 11 rows in set (0.00 sec)

##多条数据替换 #一开始以为这是个错误的sql语句: #update mytable set name=replace(name,'马屁精','小马哥'),name=replace(name,'小李子','李子');

mysql> update mytable set name=replace(name,'马屁精','小马哥'),name=replace(name ,'小李子','李子'); Query OK, 2 rows affected (0.00 sec) Rows matched: 11 Changed: 2 Warnings: 0 #从结果来看,如果进行多组数据的替换可以使用上面的方式。

#接下来进行各个字段的替换: #update mytable set name=replace(name,'秋水虾','吐丝草'),count=replace(count,100,300);

mysql> update mytable set name=replace(name,'秋水虾','吐丝草'),count=replace(cou nt,100,300); Query OK, 7 rows affected (0.00 sec) #影响了7个结果,这确实出乎意料,按照我的预测应该 Rows matched: 11 Changed: 7 Warnings: 0 #为1+3=4个影响结果

#下面我们看看数据是如何变化的: +----+----------+-------+ | id | name | count | +----+----------+-------+ | 1 | 阿琼 | 3000 | #1000变为3000也就是说将前三位改变了。 | 2 | 李子 | 500 | | 3 | 王老虎 | 300 | #100变为300,正常变化 | 4 | 赵大 | 3000 | | 5 | 王二小 | 500 | | 6 | 大炮亚子 | 300 | | 7 | ?阿琼 | 3000 | | 8 | 吐丝草 | 500 | | 22 | 小马哥 | 300 | | 23 | 大炮毛子 | 200 | | 24 | 张大炮胖 | 250 | +----+----------+-------+ 11 rows in set (0.00 sec)

#对于这样的结果只能看作是在replace中所有的数据都是字符串。(仅个人认为) #update mytable set name=replace(name,王二小,王铁柱); #该方式无法通过 #update mytable set count=replace(count,'500','100');

mysql> update mytable set count=replace(count,'500','100'); Query OK, 3 rows affected (0.00 sec) #确实为预期结果 Rows matched: 11 Changed: 3 Warnings: 0

#为此,数据在replace中仅仅是字符串 mysql> update mytable set count=replace(count,'300','150'); Query OK, 6 rows affected (0.00 sec) #结果再次得以证明 Rows matched: 11 Changed: 6 Warnings: 0

##综上,replace可以用于一个字段的多个数据替换,也可以用于不同字段的替换。 #在mysql中replace可以在一定范围内起到insert的作用,并且语法与之相似

#replace into mytable(name,count) values ('来福','70'),('力拓','600'); mysql> replace into mytable(name,count) values ('来福','70'),('力拓','600'); Query OK, 2 rows affected (0.00 sec) Records: 2 Duplicates: 0 Warnings: 0

#如果 数据库 中有类似数据又该如何呢? replace into mytable(name,count) values ('来福','70'); mysql > replace into mytable(name,count) values ('来福','70'); Query OK, 1 row affected (0.00 sec)

#这里我们查看一下该表的索引,看来索引为默认的ID. mysql> show index from mytable; +---------+------------+----------+--------------+-------------+-----------+---- ---------+----------+--------+------+------------+---------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Car dinality | Sub_part | Packed | Null | Index_type | Comment | +---------+------------+----------+--------------+-------------+-----------+---- ---------+----------+--------+------+------------+---------+ | mytable | 0 | PRIMARY | 1 | id | A | 14 | NULL | NULL | | BTREE | | +---------+------------+----------+--------------+-------------+-----------+---- ---------+----------+--------+------+------------+---------+ 1 row in set (0.00 sec)

#根据文档介绍,如果只有一个索引,那么replace相当于insert. ##记得我曾经创建了两个表,现在我们切换到另一个数据较少的表mytab上进行操作演示: mysql> show tables; +----------------+ | Tables_in_mydb | +----------------+ | mytab | | mytable | +----------------+ 2 rows in set (0.00 sec) #其默认的索引为id mysql> show index from mytab; +-------+------------+----------+--------------+-------------+-----------+------ -------+----------+--------+------+------------+---------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardi nality | Sub_part | Packed | Null | Index_type | Comment | +-------+------------+----------+--------------+-------------+-----------+------ -------+----------+--------+------+------------+---------+ | mytab | 0 | PRIMARY | 1 | id | A | 3 | NULL | NULL | | BTREE | | +-------+------------+----------+--------------+-------------+-----------+------ -------+----------+--------+------+------------+---------+ 1 row in set (0.00 sec)

#现在需要向其中添加索引(在这里遇到麻烦了,看来我对于建立索引不怎么会啊,惭愧惭愧)。 #尝试建立了多个索引都是失败,暂时写到这里。。。。 写这些并非上班不务正业,而是公司具体任务被安排到下周,接下来该忙了。

查看更多关于mysql中replace函数的用法 - mysql数据库栏目 - 自学的详细内容...

  阅读:45次