plsql 使用技巧 及 语句集锦(二)经典update
2012-05-06 22:58
417 查看
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) 根据列值直接替换成相应标识符。
员工信息表中有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
- plsql 使用技巧 及 语句集锦
- 经典的SQL语句,适合新手练习使用(三)-技巧
- SqlServer数据库操作大全——常用语句/技巧集锦/经典语句 【转载】
- sqlserver数据库操作大全——常用语句/技巧集锦/经典语句
- 【cocos2dx开发技巧5】脚本lua的使用--代码集锦
- Excel 使用技巧集锦——163种技巧
- T-SQL使用技巧集锦4
- 问:怎样在一个UPDATE语句中使用表B的三个列更新表A中的三个列?
- 总结PLSQL的快捷键以及使用技巧
- 关于oracle的sql语句中 for update 的使用,以及存在的问题
- 解密CSS Sprites的使用技巧及经典实例
- vs使用技巧集锦
- 经典SQL语句集锦
- Oracle的update语句set里使用子查询的例子解释
- 经典SQL语句集锦(收藏版)
- PLSQL条件语句完成员工加薪功能(记录类型+游标case when+if+for update+where current of)
- 经典SQL语句使用范例
- 经典SQL语句集锦【转】
- plsql使用技巧