码迷,mamicode.com
首页 > 数据库 > 详细

Oracle 批量更新表字段

时间:2018-02-27 17:46:03      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:ora   nbsp   where   col   har   between   rom   AC   sda   

Oracle 批量更新表字段

CreateTime--2018年2月27日16:02:24

Author:Marydon

(一) 将数字替换成汉字

  第一步,去重查询

  使用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类型

--错误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)

 

Oracle 批量更新表字段

标签:ora   nbsp   where   col   har   between   rom   AC   sda   

原文地址:https://www.cnblogs.com/Marydon20170307/p/8479587.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!