规范化结合操作
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
结合律运算是指其链式运算可以以 (a op b) op c
或 a op (b op c)
的形式进行,而不会改变结果。 此类运算的示例包括
-
+
-
*
-
AND
-
OR
为了简化所有这些模式替换,我们将结合律运算规范化,始终将树状结构扁平化为列表。
使用 Settings.transformPatternsNormaliseAssociativeOps
,可以实现以下转换
-- With Settings.transformPatternsNormaliseAssociativeOps active, this: SELECT (a + b) + (c + d), (a * b) * (c * d), (a AND b) AND (c AND d), (a OR b) OR (c OR d) FROM tab; -- ... is transformed into the equivalent expression: SELECT ((a + b) + c) + d, -- (a + b) + (c + d) ((a + b) + c) + d, -- (a * b) * (c * d) ((a AND b) AND c) AND d, -- (a AND b) AND (c AND d) ((a OR b) OR c) OR d -- (a OR b) OR (c OR d) FROM tab;
请注意,不必要的括号可能不会在任何一种情况下生成,但内存中的数据结构仍然看起来好像括号存在一样。
反馈
您对此页面有任何反馈吗? 我们很乐意倾听!