适用于以下版本:Dev (3.21) | 最新 (3.20) | 3.19 | 3.18 | 3.17

幂等函数重复

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

当 SQL 语句复杂或由程序生成时,可能会意外地重复执行对结果没有任何影响的函数。可以通过单个函数应用来消除这些重复。

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

-- With Settings.transformPatternsIdempotentFunctionRepetition active, this:
SELECT
  LTRIM(LTRIM(x)),
  RTRIM(RTRIM(x)),
  TRIM(TRIM(x)),
  TRIM(LTRIM(x)),
  TRIM(RTRIM(x)),
  RTRIM(TRIM(x)),
  LTRIM(TRIM(x)),
  UPPER(UPPER(x)),
  LOWER(LOWER(x)),
  ABS(ABS(x)),
  SIGN(SIGN(x)),
  CEIL(CEIL(x)),
  FLOOR(FLOOR(x)),
  ROUND(ROUND(x)),
  TRUNC(TRUNC(x)),
  CAST(CAST(x AS type) AS type)
FROM tab;

-- ... is transformed into the equivalent expression:
SELECT
  LTRIM(x),       -- LTRIM(LTRIM(x))
  RTRIM(x),       -- RTRIM(RTRIM(x))
  TRIM(x),        -- TRIM(TRIM(x))
  TRIM(x),        -- TRIM(LTRIM(x))
  TRIM(x),        -- TRIM(RTRIM(x))
  TRIM(x),        -- RTRIM(TRIM(x))
  TRIM(x),        -- LTRIM(TRIM(x))
  UPPER(x),       -- UPPER(UPPER(x))
  LOWER(x),       -- LOWER(LOWER(x))
  ABS(x),         -- ABS(ABS(x))
  SIGN(x),        -- SIGN(SIGN(x))
  CEIL(x),        -- CEIL(CEIL(x))
  FLOOR(x),       -- FLOOR(FLOOR(x))
  ROUND(x),       -- ROUND(ROUND(x))
  TRUNC(x),       -- TRUNC(TRUNC(x))
  CAST(x AS type) -- CAST(CAST(x AS type) AS type)
FROM tab;

反馈

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

The jOOQ Logo