您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

mysql中replace函数的用法_MySQL

2024/3/21 22:57:05发布24次查看
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的内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product