DB2 中decode函数的用法

/*
  开发中用DECODE时候值为空的时候报错,把解决的办法记了下来,可以直接把代码COPY下来运行,
 呵呵,欢迎大家提出更好的解决办法
 在这里用DB2系统表syscat.NODEGROUPS做例子
*/
select cast(ng.CREATE_TIME as varchar(4)),
decode(ng.REMARKS,cast(null as varchar(4)),'is null','不为空'),
decode(coalesce(cast(ng.CREATE_TIME as varchar(4)),'a')
,'a','创建时间为空','创建年份'||cast(ng.CREATE_TIME as varchar(4))),
 current timestamp  ,
ng.*
from syscat.NODEGROUPS ng

/*
cast(ng.CREATE_TIME as varchar(4)):
将ng.CREATE_TIME数据值的类型由日期型转为varchar(4),从数据前面开始取4个数据,即年份

decode(ng.REMARKS,cast(null as varchar(4)),'is null','不为空'):
如果数据为空将null初始化, 再用decode判断

decode(coalesce(cast(ng.CREATE_TIME as varchar(4)),'a')
,'a','创建时间为空','创建年份'||cast(ng.CREATE_TIME as varchar(4))):
先用cast将时间转换成为varchar(4)类型,再用coalesce判断值是不是为空,
如果为空将值得设为'a',然后用DECODE判断值是否是'a', 如果是'a'将值设置成'创建时间为空',否则设置成
'创建年份'||cast(ng.CREATE_TIME as varchar(4)),DB2用"||"连接值

 current timestamp  :
 当前时间
 
DECODE函数判断数据是否为空 在DB2和ORACLE中有一定的区别,
DB2中的数据如果为空,需要将null 进行初始化。*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值