Heim >Datenbank >MySQL-Tutorial >mysql 的replace 和replace in to_MySQL

mysql 的replace 和replace in to_MySQL

WBOY
WBOYOriginal
2016-05-27 14:12:36963Durchsuche

bitsCN.com

1.  mysql 的replace  批量替换

update candidate set education = replace(education,'科','学') where education like '%科%';

把数据中出现"科"的都替换为"学"。

 

2. mysql 的replace into

  sql="replace into score (quest_id,jdg_id,cd_id,score) values ('"+ questionId+"','"+ judgesId+"','"+candidateId+"','"+score+"')";

以下为转载  http://www.cnblogs.com/wangtao_20/archive/2011/02/03/1948959.html

id 是主键
测试方式一,插入索引值是一样的:
REPLACE INTO  fanwe_order(id,sn)  VALUES('33','测试replace into 使用')  结果:受影响的行数:

2   SELECT * FROM fanwe_order WHERE sn='测试replace into 使用'
结果:查出 一行记录


测试方式二,插入主键值是重复的:

将插入id指定为34。这样不与数据表中的id有重复现象,之后运行查询

REPLACE INTO  fanwe_order(id,sn)  VALUES('34','测试replace into 使用')

结果:没有新插入一条数据。还是替换了原来的那行。id从33变为34


原因分析:
手册上提到,如果表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的值。

意,除非表有一个PRIMARY KEY或UNIQUE索引,否则,使用一个REPLACE语句没有意义。
刚才测试的例子中。id是主键,sn是唯一索引。测试方式一是出现主键值一样,测试方式二是出现唯一索

引值一样。两种情况都出现了replace



理解:插入数据的时候,假如遇到主键值或者唯一索引键值一样的话。那么就使用替代(replace单词的含

义反应了其作用)的方式,删掉原来的。以当前插入的行进行替代(所以需要同时具有insert和delete权限

)

先删除后插入新的。正好说明了我看到的现象:显示受影响的行数是2

两种情况之一使用replace语句才会出现替换:1.主键值相同 2.索引键值相同

bitsCN.com
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn