zoukankan      html  css  js  c++  java
  • oracle 批量更新表字段

    (一) 将数字替换成汉字

      第一步,去重查询

      使用distinct关键字先对该字段值进行去重查询,看共有几种情况

    --查询指定区间内表停诊字段的值
    SELECT DISTINCT T.CLOSE_TZ
      FROM CONSULT_SCHEDULE T
     WHERE T.SCHEDULE_DATE BETWEEN TO_DATE('2018-01-01', 'yyyy-MM-dd') AND
           TO_DATE('2018-02-28', 'yyyy-MM-dd');

      查询结果:共有3种情况

      

      第二步,区分不同的数值并更新对应的汉字

      0改为是,1改为否

      使用decode函数实现

    --正确sql
    UPDATE CONSULT_SCHEDULE T
       SET T.REPLACE_TZ = DECODE(REPLACE_TZ, '1', '', '0', '')
     WHERE T.REPLACE_TZ IN ('0', '1')
       AND T.SCHEDULE_DATE BETWEEN TO_DATE('2018-01-01', 'yyyy-MM-dd') AND
           TO_DATE('2018-02-28', 'yyyy-MM-dd');

      易错点说明:

      错误一

    --错误sql1:CLOSE_TZ字段是varchar2类型
    UPDATE CONSULT_SCHEDULE T
       SET T.CLOSE_TZ = DECODE(CLOSE_TZ, 1, '', 0, '')
     WHERE T.SCHEDULE_DATE BETWEEN TO_DATE('2018-01-01', 'yyyy-MM-dd') AND
           SYSDATE;  

      

      解析:CLOSE_TZ字段是varchar2类型,1和0是number类型

      错误二:使用decode()函数必须加上限制条件,否则默认执行的是全表更新!

    --错误sql2:使用decode()函数,不在指定的情况会被置空
    UPDATE CONSULT_SCHEDULE T
       SET T.CLOSE_TZ = DECODE(CLOSE_TZ, '1', '', '0', '')
     WHERE T.SCHEDULE_DATE BETWEEN TO_DATE('2018-01-01', 'yyyy-MM-dd') AND
           SYSDATE;

      更新后,再次执行上面的查询语句

      

      原因:根据第一个查询执行的结果,可以得出正确的结果应该使用是和否这2种情况,但这却是3种情况

      解析:这是因为decode函数使用不当造成的,应该将不需要更改的列去除掉。 

      小技巧:在修改数据库数据时,执行update语句后,一定不要急着提交,执行一次查询看看是否是自己想要的结果,再提交。

    (二)将一个字段的值给另一字段  

    UPDATE  VIRTUAL_CARD T SET T.ID_CARD=T.CARDNUM WHERE T.ID_CARD IS NULL;

    (三)批量修改表字段中指定字符 

        UpdateTime--2017年8月23日08:44:34

        1.1.22 替换字段中指定字符串 

    --将PATIENT_AUTO_IMAGEINFO表中字段IMAGE_ADRESS中的#号转换成_
    UPDATE PATIENT_AUTO_IMAGEINFO
       SET IMAGE_ADRESS = REPLACE(IMAGE_ADRESS, '#', '_')
     WHERE IMAGE_ADRESS LIKE '%#%'

    (四)根据ID批量修改

    UPDATE TSORGDIAITEM
        set FSTATUS = ?, FAUDITER = ?, FAUDDATE = SYSDATE
    WHERE FID IN (15632875, 15612443)
  • 相关阅读:
    周总结6
    河北省重大需求征集系统每日进度8
    《代码整洁之道》读书笔记3
    周总结5
    河北省重大需求征集系统每日进度7
    mybatis 关联查询多个类型相同对象
    thymeleaf 接受字符串类型model值作为js方法参数报错500
    毕业设计(2.17-2.23)周工作计划
    毕业设计记录——2.16
    毕业设计记录——2.15
  • 原文地址:https://www.cnblogs.com/Marydon20170307/p/8479587.html
Copyright © 2011-2022 走看看