VSCodeでSQLフォーマットするなら「SQL Formatter VSCode」で決まり！

## tl;dr

この「SQL Formatter VSCode」を入れましょう！

https://marketplace.visualstudio.com/items?itemName=ReneSaarsoo.sql-formatter-vsc

最初は「[Prettier SQL VSCode](https://marketplace.visualstudio.com/items?itemName=inferrinizzard.prettier-sql-vscode)」を紹介していましたが、コメントで指摘されたとおりメンテナンスが終了してしまいました。
後継ツールが上記の「[SQL Formatter VSCode](https://marketplace.visualstudio.com/items?itemName=ReneSaarsoo.sql-formatter-vsc)」になります。

Prettier SQL VSCodeを既にお使いの皆さんも、SQL Formatter VSCodeに移行しましょう。

## 詳細

（内容古いです。そのうち更新します）

SQLフォーマッタをVSCode Marketplaceで検索すると色々な機能拡張が出てきますが、オプション設定を柔軟にできないものばかりが上位に来ます。

だいたいの拡張はこの「sql-formatter」というNPMライブラリに依存しています。これ自体はすごく優秀で、オプション設定も柔軟に書くことができるんですが、利用してるVSCode拡張側で、せっかくのオプション設定を固定して変更できないようにされてることが多い。理解に苦しむ…

https://github.com/sql-formatter-org/sql-formatter

実は、このsql-formatterが公式でVSCode機能拡張を出しているのです。
GitHubリポジトリはここ。すぐに見つかる。

https://github.com/sql-formatter-org/sql-formatter-vscode

しかしですね、VSCodeのマーケットプレイス側では、パッケージ名が全く違って、なぜか「Prettier SQL VSCode」という名前で公開されています。ひじょーーーにたどり着きにくい。

https://marketplace.visualstudio.com/items?itemName=inferrinizzard.prettier-sql-vscode

僕は最初、GitHubと同じ名前の「sql-formatter-vscode」でVSCode側を検索して、[全然別の人が作ってるパッケージ](https://marketplace.visualstudio.com/items?itemName=arniu.sql-formatter-vscode)を公式だと思って入れてしまいました。これもNPMライブラリとしては「sql-formatter」を使ってるから、ほんと紛らわしい。。。

まぁそんなこんなで、「Prettier SQL VSCode」をちゃんとインストールできたら、あとはオプション設定が自由にできます！（ここに載せたのがデフォルト値）

```jsonc:settings.json
{
  "[sql]": {
    "editor.defaultFormatter": "inferrinizzard.prettier-sql-vscode"
  },
  "Prettier-SQL.commaPosition": "after", // Where to place commas for SELECT and GROUP BY clauses
  "Prettier-SQL.denseOperators": false, // Whether to strip whitespace around operators such as + or >=
  "Prettier-SQL.ignoreTabSettings": false, // Whether to ignore VSCode user/workspace settings for tabSize and insertSpaces
  "Prettier-SQL.expressionWidth": 50, // Number of characters allowed in each line before breaking
  "Prettier-SQL.indentStyle": "standard", // Switched between standard keyword positioning vs maintaining a central space column
  "Prettier-SQL.insertSpacesOverride": true, // Overrides insertSpaces if Prettier-SQL.ignoreTabSettings is enabled
  "Prettier-SQL.keywordCase": "preserve", // Whether to print keywords in ALL CAPS or lowercase
  "Prettier-SQL.linesBetweenQueries": 1, // How many newlines to place between each query / statement
  "Prettier-SQL.logicalOperatorNewline": "before", // Whether to break before or after AND and OR
  "Prettier-SQL.newlineBeforeSemicolon": false, // Whether to place semicolon on its own line or on previous line
  "Prettier-SQL.SQLFlavourOverride": "sql", // Uses custom SQL Flavour to format sql files. Use this if you are using the Microsoft PostgreSQL or MSSQL Extensions since they do not provide a new language ID for VSCode.
  "Prettier-SQL.tabSizeOverride": 2, // Overrides tabSize if Prettier-SQL.ignoreTabSettings is enabled
  "Prettier-SQL.tabulateAlias": false // Whether to right-align aliases to the longest line in the SELECT clause
}
```

特に個人的には`expressionWidth`で1行内の文字数を設定できるようになったのが超うれしい！イマイチなところで改行されたりするじゃないですか。もちろんデフォルトのまま使っても十分綺麗にはなりますが、選択肢の自由はあって良いですよね。

自分で入れた設定はこんな感じ。ほかはデフォルト。

```json
{
  "[sql]": {
    "editor.defaultFormatter": "inferrinizzard.prettier-sql-vscode"
  },
  "Prettier-SQL.expressionWidth": 120,
  "Prettier-SQL.keywordCase": "upper"
  "Prettier-SQL.SQLFlavourOverride": "postgresql",
}
```

他の機能拡張を不満タラタラで使ってるみなさん、是非「Prettier SQL VSCode」に乗り換えましょう！

ではまた〜

## 参考記事

* [VSCodeでSQLをフォーマットしたいよ](https://qiita.com/Daara_y/items/6c1ddfa141d38a22e58d)