zoukankan      html  css  js  c++  java
  • mysql 的replace 和replace in to

    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.索引键值相同

  • 相关阅读:
    Freemarker
    加解密算法、消息摘要、消息认证技术、数字签名与公钥证书
    Jenkins入门
    kafka实战
    多线程文件下载
    Excel操作报表
    @Pointcut 使用@annotation 带参数
    博客园设置
    Windows下 tensorboard显示No graph definition files were found的问题解决
    通过GitHub Desktop 上传代码到github 远程仓库
  • 原文地址:https://www.cnblogs.com/sxshiblog/p/3531072.html
Copyright © 2011-2022 走看看