DB2中使用case when 字符串自动补位是什么设置

DB2中使用case when 字符串自动补位是什么设置,第1张

1、每条记录都需要多执行一次case when

2、第2次执行时数据可能已经被缓存

可以先执行select * from A where keyno='1'

然后执行 select case when ....与 select function1(para) ...,以消除缓存影响,或者每次执行前消除缓存(db2没怎么用过,不知道怎么消除缓存)

另:case when中的esle肯定不会被执行

需要做多一个判断,当除数为0的时候然后xxxx,否则就相除

类似这样

SELECT fld1, fld2,

CASE WHEN fld2 = 0 THEN 0

ELSE fld1/fld2 END

FROM sysibm/sysdummy1

DECLARE CHOICE2 CURSOR WITH RETURN TO CALLER FOR --声明游标 CHOICE2

SELECT COMPANYID,DEPTID,SEQID,SUBMITTIME,SUBMITDATE,

B.GRADEDESC HYEAR,PRODUCTID,PRODUCTCODE,PRODUCTDESC,

A.GRADEID,PRICE,SFZDPY,LQUANT,MQUANT,MCQUANT,LCQUANT,

UQUANT,OTHQUANT1,OTHQUANT2,OTHQUANT3,OTHQUANT4,EMP1,EMP2,STATUS,A.REMARK,

DECIMAL(ABS(MCQUANT-MQUANT)/NULLIF(MQUANT,0)*100,10,2)TAG

FROM T_SUPPLY_PPB_HY A

LEFT JOIN T_SUPPLY_GRADATION B ON A.GRADEID=B.GRADEID

WHERE HYEAR=TO_CHAR(P_NF)||P_BN

ORDER BY B.GRADEID,PRODUCTCODE,A.PRICE

--1.DECIMAL(P,S)十进制数,小数点位置由数字的精度(P)和小数位(S)确定。

-- 精度是数字的总位数,必须小于32。小数位是小数部分数字的位数且总是小于或等于精度值。

-- 如果未指定精度和小数位,则十进制值的缺省精度为5,缺省小数位为0。

--2.语法:NULLIF ( expression , expression )

-- expression:(常量、列名、函数、子查询或算术运算符、按位运算符以及字符串运算符的任意组)

-- 如果两个表达式不相等,NULLIF 返回第一个 expression 的值。如果相等,NULLIF 返回第一个 expression 类型的空值。如果两个表达式相等且结果表达式为 NULL,NULLIF 等价于 CASE 的搜索函数。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/6715993.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-27
下一篇2023-03-27

发表评论

登录后才能评论

评论列表(0条)

    保存