带有CHECK + CASE的IntelliJ SQL格式化程序

时间:2019-04-29 12:00:29

标签: intellij-idea code-formatting

我正在尝试使用IntelliJ的SQL格式化程序(Ultimate 2019.1)来使用CASE语句来格式化检查约束,如下所示:

(postgres语法)

ALTER TABLE "foo"
  ADD CONSTRAINT "bar" CHECK ( 
    CASE
    WHEN ("col_a" = 'VAL_A1') THEN ("col_b" IN ('A', 'B', 'C'))
    WHEN ("col_a" = 'VAL_A2') THEN ("col_b" IN ('D', 'E', 'F'))
    ELSE FALSE
    END
  );

或:

ALTER TABLE "foo"
  ADD CONSTRAINT "bar" CHECK ( CASE
    WHEN ("col_a" = 'VAL_A1') THEN ("col_b" IN ('A', 'B', 'C'))
    WHEN ("col_a" = 'VAL_A2') THEN ("col_b" IN ('D', 'E', 'F'))
    ELSE FALSE
  END);

到目前为止,我得到的最好的是:

ALTER TABLE "foo"
  ADD CONSTRAINT "bar" CHECK ( CASE
                               WHEN ("col_a" = 'VAL_A1') THEN ("col_b" IN ('A', 'B', 'C'))
                               WHEN ("col_a" = 'VAL_A2') THEN ("col_b" IN ('D', 'E', 'F'))
                               ELSE FALSE
                               END);

我已经经历了几个选项,但是找不到告诉格式化程序不要将WHENCASE关键字对齐的选项(或者将CASE放在一个新的行)。

我发现的一个选择是根本不包装支票。但是,使用大的CASE语句很快就变得难以理解

有什么我可以做的吗?

谢谢!

0 个答案:

没有答案