如何在DB2SQL中划分两列

如何在DB2SQL中划分两列,sql,db2,Sql,Db2,我将磁盘容量存储在两列中,即总容量和已用容量。我需要表示%的利用率,我需要将使用的容量除以总容量,作为使用的容量/总容量*100。 我正在使用以下查询: select CAPACITY_USED / CAPACITY_TOTAL from TableName 其中给出了以下错误: DB2 SQL Error: SQLCODE=-801, SQLSTATE=22012, SQLERRMC=null, DRIVER=4.15.82 我已经将我的列转换为十进制,但即使这样也不行 错误代码801表示

我将磁盘容量存储在两列中,即总容量和已用容量。我需要表示%的利用率,我需要将使用的容量除以总容量,作为使用的容量/总容量*100。 我正在使用以下查询:

select CAPACITY_USED / CAPACITY_TOTAL from TableName
其中给出了以下错误:

DB2 SQL Error: SQLCODE=-801, SQLSTATE=22012, SQLERRMC=null, DRIVER=4.15.82

我已经将我的列转换为十进制,但即使这样也不行

错误代码801表示您的查询试图除以零

select CAPACITY_USED / CAPACITY_TOTAL from TableName
where CAPACITY_TOTAL IS NOT NULL and CAPACITY_TOTAL <> 0
从TableName中选择已使用容量/总容量
其中,总容量不为空,总容量为0

好,所以
SQLSTATE=22012
表示您正试图除以零。显然,您的某些行在
CAPACITY\u 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\u TOTAL
为空或零:

SELECT CAPACITY_USED / CAPACITY_TOTAL AS UTILIZATION
  FROM MY_TABLE
 WHERE CAPACITY_TOTAL IS NOT NULL
   AND CAPACITY_TOTAL > 0

您确定总容量总是大于0吗
SQLSTATE=22012
建议用零除法。
NVL
不会解决用零除法的问题。它只对空值有帮助。