0

我正在使用以下查询一目了然地了解一些表空间的使用情况:

db2 "select substr(tbsp_name,1,30) as Tablespace_Name, tbsp_type as Type, substr(tbsp_state,1,20) as Status, (tbsp_total_size_kb / 1024 ) as Size_Meg, smallint((float(tbsp_free_size_kb)/ float(tbsp_total_size_kb))*100) as Percent_Free_Space, int((tbsp_free_size_kb) / 1024 )as Meg_Free_Space from sysibmadm.tbsp_utilization where smallint((float(tbsp_free_size_kb)/ float(tbsp_total_size_kb))*100) < 20 order by Percent_Free_Space"

但是,我遇到了以下错误:

SQL0801N 已尝试除以零。SQLSTATE=22012

我了解您可以使用 a 修复此错误,NULLIF但是我找不到在查询中设置的正确方法,感谢您的帮助。

(使用“DB2 v9.7.0.11”、“s150922”、“IP23937”和 Fix Pack “11”)

4

2 回答 2

0

也许您应该使用案例:

CASE WHEN tbsp_total_size_kb=0 THEN NULL ELSE (tbsp_total_size_kb / 1024 ) END as Size_Meg

iftbsp_total_size_kb可以为 null IFNULL,如下所示:

CASE WHEN IFNULL(tbsp_total_size_kb,0)=0 THEN NULL ELSE (tbsp_total_size_kb / 1024 ) END as Size_Meg
于 2020-03-11T01:59:19.243 回答
0

尝试这个:

smallint(float(tbsp_free_size_kb) / float( nullif(tbsp_total_size_kb, 0) ) * 100)

于 2020-03-11T07:03:36.193 回答