plsql 使用技巧 及 语句集锦(二)经典update

1 列值的替换:
(1) 根据列值直接替换成相应标识符。
员工信息表中有xb字段,值为1和2 替换 为’男‘和’女‘
update jg_jzgjcsjzl  set xb= case when xbm='1' then '男' when xbm='2' then '女' end

UPDATE Personnel SET salary = CASE WHEN salary >= 5000   THEN salary * 0.9 WHEN salary >= 2000 AND salary < 4600 THEN salary * 1.15 ELSE salary END;


(2)根据另一张表的信息替换本表中列(与另表对照)的值。
一个国标民族代码表,一张员工信息表 将员工的籍贯替换成代码(籍贯

a   UPDATE test1 a
    SET a.x__nativeplace = 
       (SELECT b.code FROM test2 b WHERE instr(a.x__nativeplace,b.info)>0)
       (inter 就是b.info在a.x__nativeplace 中的位置,如果为0表示没找到)
       根据两列相似的值更新另一列值)
b    UPDATE overall a
     SET a.x__nativeplace =
       (SELECT b.info FROM gb_t2260 b WHERE b.code=a.x__nativeplace)

c   update  test  a 
    set  (a.prdn_st,avg_yield)=(select b.prd_st,b.avg_yield 
    from  test11 b 
where a.prd_no=b.prd_no and a.plant=b.plant ) 
但是需要注意的是必须要一对一,否则oracle会报错: 
ORA-01427: single-row subquery returns more 
than one row. Cause: You tried to execute an SQL statement that contained a subquery
that returns more than one row.

select DISTINCT 'UPDATE '|| TABLE_NAME|| ' SET ZYMC="AAAAA" WHERE ZYMC="BBBBB";' from ALL_TAB_COLUMNS where OWNER='GXJXGL' AND COLUMN_NAME='ZYMC'

 ----更新课程代码表 开课部门 一次性 根据一例值更新另外一列。
update kcdmb set kkbmdm = decode(kkbm,'文化传媒系',16,'经贸系',12,'财政金融系',13,'计算机信息工程系',14,'旅游系',15,16);

一次性更新一张表的多个字段

update emp
 set name = 'tom' , age = 21 , sex = 'm'

------去掉列植中左边的0

update table set  id=ltrim(id,'0') (trim 默认是去掉两边的空格,trim(column_name,'string' )也可以去掉其他字符


---case when 用法

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值