设为首页 收藏本站
查看: 755|回复: 0

[经验分享] mysql中replace函数的用法

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-2-18 11:33:01 | 显示全部楼层 |阅读模式
##-----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)
#现在需要向其中添加索引(在这里遇到麻烦了,看来我对于建立索引不怎么会啊,惭愧惭愧)。
#尝试建立了多个索引都是失败,暂时写到这里。。。。
写这些并非上班不务正业,而是公司具体任务被安排到下周,接下来该忙了。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-15090-1-1.html 上篇帖子: 解决mysql中文乱码 下篇帖子: MySQL LOAD DATA INFILE语法 replace mysql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表