关闭

oracle中if/else功能的实现的3种写法

1439人阅读 评论(0) 收藏 举报
分类:

经常会用到的,记录一下




1.case when

case when a='1'then 'aaa'
     when a='2' then 'bbb'
else
  'ccc'
end as name

注意点: 

1、以CASE开头,以END结尾
2、分支中WHEN 后跟条件,THEN为显示结果
3、ELSE 为除此之外的默认情况,类似于高级语言程序中switch case的default,可以不加
4、END 后跟别名


2.decode

DECODE(value,if1,then1,if2,then2,if3,then3,...,else)

表示如果value等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。


3.标准sql规范if/else

一、单个IF
1、

if a=...  then
.........
end if;

2、

if a=... then
......
else
....
end if;

二、多个IF

if a=..  then
......
elsif a=..  then
....
end if;     
这里中间是“ELSIF”,而不是ELSE IF 。这里需要特别注意



另外 刚才写了个SQL 还用到 instr

需求是有个字段 zywfwzss里面可能存在,比如"税种:增值税,所属时期:XXXX" 的字符串,但是只需要提取税种的名称,即“增值税”,如果字段里没有税种,就直接是增值税

我是这样写的:

select case
when instr(zywfwzss,'税种:') >0
then substr(zywfwzss,instr(zywfwzss,':')+1 ,instr(zywfwzss,',')-instr(zywfwzss,':')-1)
else '增值税'
end as sz
from taxis_wfwz_sjdr







0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4270次
    • 积分:82
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:7篇
    • 译文:0篇
    • 评论:0条
    文章存档