我将磁盘容量存储在2列中,格式为CAPACITY_TOTAL和CAPACITY_USED。我需要提供%利用率,我需要将CAPACITY_USED除以CAPACITY_USED / CAPACITY_TOTAL * 100。 我在查询下面使用:
select CAPACITY_USED / CAPACITY_TOTAL from TableName
,它给出了以下错误:
DB2 SQL Error: SQLCODE=-801, SQLSTATE=22012, SQLERRMC=null, DRIVER=4.15.82
我已经将我的列转换为十进制,但即使这样也行不通。
答案 0 :(得分:3)
错误代码801表示您的查询试图除以零。
select CAPACITY_USED / CAPACITY_TOTAL from TableName
where CAPACITY_TOTAL IS NOT NULL and CAPACITY_TOTAL <> 0
答案 1 :(得分:1)
好的,SQLSTATE=22012
表示您正在尝试除以零。显然,您的某些行在CAPACITY_TOTAL
列中包含空值或零,并且db无法计算公式。
尝试此查询以获得更好的结果:
SELECT CASE CAPACITY_TOTAL
WHEN 0 THEN 0
WHEN NULL THEN 0
ELSE CAPACITY_USED / CAPACITY_TOTAL
END AS UTILIZATION
FROM MY_TABLE
您可能希望为零/空值添加一些其他有意义的返回值。
或者,跳过CAPACITY_TOTAL
为空或零的行:
SELECT CAPACITY_USED / CAPACITY_TOTAL AS UTILIZATION
FROM MY_TABLE
WHERE CAPACITY_TOTAL IS NOT NULL
AND CAPACITY_TOTAL > 0