# SQL 整形・圧縮ツール

SQL を句ごとに改行して整形、または 1 行に圧縮します。MySQL・PostgreSQL・SQLite・SQL Server・BigQuery に対応。

https://codeknife.dev/ja/sql-fomatta/

## できること

SQL を句ごとに改行して整形するか、1 行に圧縮します。標準 SQL のほか MySQL、PostgreSQL、SQLite、T-SQL（SQL Server）、BigQuery に対応し、構文エラーは行と列つきで表示されます。

## 使い方

1. SQL を貼り付けるか、`.sql` ファイルをドロップします。
2. **整形**か**圧縮**を選び、続けて方言、キーワードの大文字・小文字、インデントを選びます。
3. 結果をコピーまたはダウンロードするか、**出力を入力にする**で次の入力にします。

## 例

`select id,name from users where active=1` を整形すると、`SELECT`、`FROM`、`WHERE` がそれぞれ別の行になり、列と条件がその下にインデントされます。整形したクエリを圧縮すると `SELECT id,name FROM users WHERE active = 1` になります。

## 知っておくと便利なこと

- 変わるのは空白と、選んだ場合のキーワードの大文字・小文字だけです。名前、文字列、数値は入力のままです。
- 圧縮は `--` と `/* */` のコメントを削除しますが、データベースが解釈する MySQL の `/*! */` とオプティマイザヒントの `/*+ */` は残します。
- データベースの方言を選んでください。バッククォートは MySQL、角括弧は T-SQL、`::` キャストは PostgreSQL です。
- フォーマッターは最初の整形時に読み込まれるため、最初の結果は少し時間がかかることがあります。圧縮はダウンロード不要です。

## 方言が重要なのはなぜですか？

データベースごとに名前や演算子の書き方が違います。MySQL はバッククォート、T-SQL は角括弧で名前を囲み、PostgreSQL には :: キャストや $$ 文字列があります。方言を間違えると、正しい SQL が読み取れなかったり、変な整形になったりします。

## よくある質問

### 整形するとクエリの動作は変わりますか？

いいえ。変わるのは空白と、選んだ場合のキーワードの大文字・小文字だけです。名前、文字列、数値は入力のままです。圧縮ではコメントを削除しますが、データベースが解釈する MySQL の /*! */ と /*+ */ は残します。

### 構文エラーが出るのはなぜですか？

整形のためにクエリを読み取る必要があるため、読み取れない最初のトークンで止まり、その行と列を示します。まず方言を確認し、次に示された箇所（カンマ、引用符、閉じ括弧の不足など）を確認してください。

### このツールは SQL をどこかに送信しますか？

いいえ。すべてブラウザ内で行われます。入力した内容が当社のサーバーに送信されることはありません。