首页 > 解决方案 > NULLIF 如何在此查询中正确设置它

问题描述

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

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”)

标签: db2tablespacenullif

解决方案


也许您应该使用案例:

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

推荐阅读