如何重写DB2 SELECT语句使tempBool变量获取TRUE或FALSE值?
重写SQL语句实现布尔值赋值
你可以通过直接对聚合结果进行布尔判断,确保语句始终返回一行结果,这样tempBool变量无论如何都会被赋值为TRUE或FALSE,而不会出现空结果的情况。
方案一:使用CASE表达式
SELECT CASE WHEN COUNT(*) > 100 THEN TRUE ELSE FALSE END INTO tempBool FROM ABC;
方案二:直接使用布尔判断(DB2等数据库支持)
SELECT COUNT(*) > 100 INTO tempBool FROM ABC;
原语句问题说明
原语句通过HAVING COUNT(*) > 100过滤结果,当ABC表的行数≤100时,HAVING子句会排除所有行,导致没有结果返回,进而无法给tempBool赋值。修改后的语句基于聚合函数COUNT(*)的结果直接生成布尔值,确保始终返回一行数据,变量能被正确赋值。
内容的提问来源于stack exchange,提问作者db2
相关产品推荐
相关产品推荐

