本文共 1561 字,大约阅读时间需要 5 分钟。
1. 输入参数为字符类型,且允许为空的,可以使用COALESCE(inputParameter,'')把NULL转换成'';
2. 输入类型为整型,且允许为空的,可以使用COALESCE(inputParameter,0),把空转换成0;
3. 输入参数为字符类型,且是非空非空格的,可以使用COALESCE(inputParameter,'')把NULL转换成'',然后判断函数返回值是否为'';
4. 输入类型为整型,且是非空的,不需要使用COALESCE函数,直接使用IS NULL进行非空判断。
--建立测试环境
DB2 COALESCE 测试db2 => connect to minideft 数据库连接信息 数据库服务器 = DB2/NT 9.5.1 SQL 授权标识 = ALVIN 本地数据库别名 = MINIDEFT
--插入测试值
db2 => create table t1(c1 int,c2 varchar(10),c3 date,c4 timestamp) DB20000I SQL命令成功完成。 db2 => insert into t1(c1,c2,c3,c4)values(1,'1',current date,current timestamp) DB20000I SQL命令成功完成。 db2 => insert into t1(c1)values(1) DB20000I SQL命令成功完成。 db2 => insert into t1(c2)values('1') DB20000I SQL命令成功完成。 db2 => insert into t1(c3)values('2005-01-01') DB20000I SQL命令成功完成。 db2 => insert into t1(c4)values('2005-01-01 00:00:00.000000') DB20000I SQL命令成功完成。 db2 => select * from minideft.t1 SQL0204N "MINIDEFT.T1" 是一个未定义的名称。 SQLSTATE=42704
--查询原表数据
db2 => select * from t1 C1 C2 C3 C4 ----------- ---------- ---------- -------------------------- 1 1 2010-01-21 2010-01-21-11.11.25.405000 1 - - - - 1 - - - - 2005-01-01 - - - - 2005-01-01-00.00.00.000000 5 条记录已选择。
--调用函数示例
db2 => select coalesce(c1,0),coalesce(c2,'fuck'),coalesce(c3,'2000-01-01'),coale sce(c4,'2000-01-01 00:00:00.000000') from t1 1 2 3 4 ----------- ---------- ---------- -------------------------- 1 1 2010-01-21 2010-01-21-11.11.25.405000 1 fuck 2000-01-01 2000-01-01-00.00.00.000000 0 1 2000-01-01 2000-01-01-00.00.00.000000 0 fuck 2005-01-01 2000-01-01-00.00.00.000000 0 fuck 2000-01-01 2005-01-01-00.00.00.000000 5 条记录已选择。
转载地址:http://gedpi.baihongyu.com/