以前用mysql用习惯了,当前公司用的oracle,遇到一些复杂一丢丢的sql处理就有点不顺手了,所以在网上百度出了一个oracle的条件判断函数decode()
1、decode()函数:
decode()方法使用结构:
decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)
简单例子就是: select id, username, age, decode(sex,0,'男',1,'女') from users;
===================================================================================================================================
当你的条件值返回的不是固定1,2,3这种值的时候,有可能会返回null或有值,就可以用到sign()函数了
sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1
如我们要修改A表,然后A表中与B表的字段有关联,来判断B表是否有属于A表的数据,有则修改A表中的state状态为:1或2或3,效果如下
先用select sign(count(B.id)) from B表 B where 条件1=xxx 得出是0,还是1;没数据为0,有数据为1
update A表 A set
A.corp_submit_state = decode((select sign(count(B.id))from B表 B
where B.audit_flag = 2 and B.valid_flag = 1 and B.CONT_PARTY_A = A.corp_id),0,'0',1,'2')
-- where A.corp_id = 249