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 用法
總結
以上是生活随笔為你收集整理的plsql 使用技巧 及 语句集锦(二)经典update的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MIRO校验过程
- 下一篇: 固定资产多提折旧问题