可用版本:Dev (3.21) | 最新版 (3.20) | 3.19 | 3.18

不可达的CASE子句

适用于 ✅ 开源版   ✅ 专业版   ✅ 企业版

当搜索到的 CASE 表达式 包含不可达的 WHENELSE 子句时,我们可以删除它们。

使用 Settings.transformPatternsUnreachableCaseClauses,可以实现以下转换

-- With Settings.transformPatternsUnreachableCaseClauses active, this:
SELECT
  CASE WHEN a = b THEN 1 WHEN TRUE THEN 2 WHEN c = d THEN 3 END,
  CASE WHEN a = b THEN 1 WHEN FALSE THEN 2 WHEN c = d THEN 3 END
FROM tab;

-- ... is transformed into the equivalent expression:
SELECT
  CASE WHEN a = b THEN 1 ELSE 2 END,
  CASE WHEN a = b THEN 1 WHEN c = d THEN 3 END
FROM tab;

一个更微妙的不可达 WHEN 子句是一个已经被列出的子句,与 THEN 子句无关。虽然删除它是一个正确的转换,但重复很可能是由于拼写错误。

-- With Settings.transformPatternsUnreachableCaseClauses active, this:
SELECT
  CASE
    WHEN a = b THEN 1
    WHEN c = d THEN 2
    WHEN a = b THEN 3
  END
FROM tab;

-- ... is transformed into the equivalent expression:
SELECT
  CASE
    WHEN a = b THEN 1
    WHEN c = d THEN 2
  END
FROM tab;

反馈

您对此页面有任何反馈吗? 我们很乐意听到您的反馈!

The jOOQ Logo