CASE与DISTINCT FROM到DECODE
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
当搜索到的 CASE 表达式 包含 DISTINCT 谓词,并且这些谓词始终共享相同的操作数时,该表达式可能会被更短的 DECODE 函数 替换
使用 Settings.transformPatternsCaseDistinctToDecode
,可以实现以下转换
-- With Settings.transformPatternsCaseDistinctToDecode active, this: SELECT CASE WHEN a IS NOT DISTINCT FROM b THEN 1 END, CASE WHEN a IS NOT DISTINCT FROM b THEN 1 ELSE 2 END, CASE WHEN a IS NOT DISTINCT FROM b THEN 1 WHEN a IS NOT DISTINCT FROM c THEN 2 END, CASE WHEN a IS NOT DISTINCT FROM b THEN 1 WHEN a IS NOT DISTINCT FROM c THEN 2 ELSE 3 END FROM tab; -- ... is transformed into the equivalent expression: SELECT DECODE(a, b, 1), -- CASE WHEN a IS NOT DISTINCT FROM b THEN 1 END, DECODE(a, b, 1, 2), -- CASE WHEN a IS NOT DISTINCT FROM b THEN 1 ELSE 2 END, DECODE(a, b, 1, c, 2), -- CASE WHEN a IS NOT DISTINCT FROM b THEN 1 WHEN a IS NOT DISTINCT FROM c THEN 2 END, DECODE(a, b, 1, c, 2, 3) -- CASE WHEN a IS NOT DISTINCT FROM b THEN 1 WHEN a IS NOT DISTINCT FROM c THEN 2 ELSE 3 END, FROM tab;
反馈
您对此页面有任何反馈吗? 我们很乐意听取您的意见!