如何在SQLFluff中配置运算符换行后的缩进格式?
SQLFluff 运算符换行缩进的自定义需求解答
现有配置情况
目前SQLFluff官方提供的运算符换行规则只有两种,对应配置项operator_new_line的两个可选值:
after:运算符放在行尾,格式如下:
SELECT a + b FROM
before:运算符放在行首,格式如下:
SELECT a + b FROM
确实没有内置支持你期望的表达式延续行额外缩进的配置,你没遗漏官方规则。
同类需求情况
有不少用户在SQLFluff社区讨论中提出过类似需求——当多列存在跨行表达式时,希望通过额外缩进区分表达式的延续部分和独立列,避免像你举例的那样把b误判为独立列。不过这个需求目前还没被官方整合为默认规则,属于待实现的社区呼声功能。
实现期望格式的可能方式
如果想要实现你期望的格式:
SELECT a + b, c, d FROM
或是类似隐含括号的视觉效果:
SELECT ( a + b ), c, d FROM
可以尝试通过自定义SQLFluff规则来实现,需要编写Python代码解析SQL的AST节点,识别出跨行的表达式延续行,为其添加额外的缩进级别。不过这需要具备基础的Python开发和SQLFluff规则开发能力。
内容的提问来源于stack exchange,提问作者Skaramuche
相关产品推荐
相关产品推荐

