ホームページ >データベース >mysql チュートリアル >mysql中replace函数的用法_MySQL

mysql中replace函数的用法_MySQL

PHP中文网
PHP中文网オリジナル
2016-05-27 14:12:122420ブラウズ

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的内容,更多相关内容请关注PHP中文网(www.php.cn)!


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。