对于我正在使用的查询,如果没有返回任何行,则需要返回默认值(因为输出将在下游使用)。我遇到的问题是如何以编程方式识别返回零行或空行,以便查询知道使用'默认值'值。
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"
非常感谢任何提示/见解!
答案 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