如何使用 CASE 语句获取空结果集?

How to get empty result set with a CASE statement?

我无法在 CASE 语句中得到空结果。以下查询 returns NULL 作为结果:

SELECT CASE WHEN ('test' IS NULL) THEN (SELECT 'null_result') ELSE (SELECT 'empty_result' WHERE 1<>1) END;

我想得到空结果(没有任何行)。

您可以过滤掉外部 WHERE 子句中的 NULL 值。

SELECT CASE WHEN ('test' IS NULL) THEN (SELECT 'null_result') ELSE (SELECT 'empty_result' WHERE 1<>1) END
WHERE CASE WHEN ('test' IS NULL) THEN (SELECT 'null_result') ELSE (SELECT 'empty_result' WHERE 1<>1) END IS NOT NULL;

SELECT *
FROM (
        SELECT CASE WHEN ('test' IS NULL) THEN (SELECT 'null_result') ELSE (SELECT 'empty_result' WHERE 1<>1) END as result_case
) x
WHERE result_case IS NOT NULL;