当查询不返回DB2中的行时返回默认值

时间:2016-07-15 14:21:28

标签: sql db2

对于我正在使用的查询,如果没有返回任何行,则需要返回默认值(因为输出将在下游使用)。我遇到的问题是如何以编程方式识别返回零行或空行,以便查询知道使用'默认值'值。

SELECT DISTINCT fieldName from DB2Table
WHERE qualifier1 = '___'
AND qualifier2 = '___';

这可以返回值或不返回任何值(如同,根本没有行)。我曾试图在CASE声明中使用count(*),NOT NULL和EXISTS(),但我没有运气。

**Psuedocode**:
IF query returns values, return those
ELSE return "Some Value"

非常感谢任何提示/见解!

2 个答案:

答案 0 :(得分:0)

如果您只想要一行,那么请使用聚合:

SELECT COALESCE(fieldName, 'DEFAULT VALUE')
FROM DB2Table
WHERE qualifier1 = '___' AND qualifier2 = '___';

如果您可以获得多行,那么这是另一种方法:

WITH t as (
      SELECT fieldName
      FROM DB2Table
      WHERE qualifier1 = '___' AND qualifier2 = '___'
     )
SELECT t.*
FROM t
UNION ALL
SELECT 'DEFAULT VALUE'
FROM sysibm.sysdummy1
WHERE NOT EXISTS (SELECT 1 FROM t);

答案 1 :(得分:0)

如果查询没有返回行,并且在这种情况下需要返回默认值,请使用

SELECT 
COALESCE(
          (SELECT DISTINCT fieldName from DB2Table
          WHERE qualifier1 = '___' AND qualifier2 = '___'), 'DEFAULTVALUE'
        )
FROM sysibm.sysdummy1