DB2 中decode函数的用法

来源:互联网 发布:avi视频下载软件 编辑:程序博客网 时间:2024/05/21 14:49

/*
  开发中用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 进行初始化。*/

原创粉丝点击