SQL整形
SQLクエリを読みやすい改行とインデントに整えます。入力内容はサーバーに送信しません。
ツールを準備しています。
ユーザーの評価
まだレビューはありません。このツールを使ったことがあれば、最初のレビューを書いてください。
SQL整形の詳しい使い方ガイド
使い方と例を確認し、知りたいことはトピックから探せます。
はじめに確認すること
- すること
- 改行とインデント、予約語の大文字・小文字だけを変えます。
- 手を加えないもの
- 文字列とコメントの中身。
- 認識するもの
- '' のエスケープ、ドル引用、"名前" · `名前` · [名前]、->> · <=> · :: などの演算子、:id · @name · MyBatisの #{id} · ${name} のプレースホルダー。
- 選べるもの
- データベース(標準SQL・MySQL・PostgreSQL・Oracle・SQL Server・SQLite)、予約語の大文字・小文字、インデント幅(0〜8)、カンマの位置。
- 1行にまとめる
- 空白を最小限に減らしますが、行コメントの後ろでは改行します。
- 自己確認
- 整形の前後のトークンが同じか比べて、画面に表示します。
- 知らせるだけのもの
- 括弧・引用符の対応。修正まではしません。
- サイズ
- 20万文字まで。サーバーには送信しません。
SQL整形の使い方
SQLを貼り付けます
1行につながっていても大丈夫です。セミコロンで複数の文をつなげたものも、そのまま入れてください。
データベースと予約語を決めます
お使いのデータベースを選ぶと、その文法で読み取ります。予約語を大文字・小文字・そのままの中から選び、インデント幅を決めます。カンマを行頭に置く方式も選べます。
内容が変わっていないか確認します
結果の上に「内容が変わっていないことを確認しました。」と表示されれば、中身が変わっていないという意味です。変わったと表示された場合は、その結果を使わないでください。
コピーまたは保存します
結果をコピーしたり、.sqlファイルとして保存したりできます。
こんな作業に使えます
文字列とコメントの中には手を加えません
クエリを正規表現で置き換える方式は、文字列の中にあるselectやセミコロンまで変えてしまい、クエリを壊します。このツールは、広く使われているsql-formatterエンジンでクエリをトークンに分けてから組み立て直すので、文字列とコメントの境界を正確に把握しています。シングルクォートを2つ重ねてエスケープした引用符、ドル記号で囲んだ文字列、ダブルクォート・バッククォート・角括弧で囲んだ名前も、まとめて認識します。
内容が変わっていないか、自分で確認します
整形は、改行とインデント、予約語の大文字・小文字を変えるだけの作業なので、中身は同じままでなければなりません。このツールは、整形の前後のトークンを比べて同じか確認し、画面に表示します。もし違っていたら、その結果を使わないよう、はっきりお知らせします。
例で結果を確かめる
1行のクエリを展開する
select a,b from t where x=1 order by aSELECT
a,
b
FROM
t
WHERE
x = 1
ORDER BY
a文字列の中はそのまま
select 'select * from users' as tSELECT
'select * from users' AS t何を変えて、何をそのままにするか
表を左右にスクロールすると続きが見られます。
| 項目 | 処理 | 理由 |
|---|---|---|
| 改行とインデント | 変えます | 読みやすくするのがこのツールの役目です。 |
| 予約語の大文字・小文字 | 選んだとおりに変えます | SQLは予約語の大文字・小文字を区別しません。 |
| 名前の大文字・小文字 | そのままにします | 引用符で囲んだ名前は、大文字・小文字で意味が変わります。 |
| 文字列・コメントの中 | そのままにします | 1文字変わるだけでも結果が変わります。 |
結果が思ったとおりにならないとき
文法で読み取れなかったと表示されます
選んだデータベースの文法と異なる表記が混ざっているかもしれません。バッククォート(`)はMySQL、角括弧([ ])はSQL Server、#コメントはMySQLのように、データベースを変えてみてください。1行にまとめる機能は、データベースに関係なく使えます。
括弧が合っていないと表示されます
クエリ自体に、対応していない括弧があります。修正はせず、そのまま整形するので、結果を確認してください。
内容が変わったと表示されます
このツールの問題です。その結果は使わず、元のクエリを使ってください。どんなクエリだったかお知らせいただければ、修正します。
大文字に変えたくありません
予約語を「そのまま」にしておくと、元の大文字・小文字を保ちます。
知っておきたい用語
- トークン
- クエリを、単語・文字列・コメントなどの断片に分けた単位です。
- ドル引用
- $$で囲む文字列です。中に引用符を自由に入れられます。
- 予約語
- SELECT、FROMのように、SQLが決めている単語です。
- CTE
- WITHで始まる一時的な結果セットです。
SQL整形のよくある質問
どのデータベースのSQLに対応していますか?
標準SQL、MySQL、PostgreSQL、Oracle(PL/SQL)、SQL Server(T-SQL)、SQLiteから選べます。選んだデータベースの文法で読み取り、MyBatisの#{…}・${…}のプレースホルダーはそのまま残します。
クエリが間違っているかどうかも教えてくれますか?
選んだデータベースの文法で読み取れないときはお知らせし、括弧や引用符の対応が合っていないときもお知らせします。修正まではしません。
クエリはサーバーにアップロードされますか?
アップロードされません。このブラウザの中だけで整形します。実際のデータが入ったクエリも、そのまま貼り付けて大丈夫です。
文法が間違っているクエリも整形されますか?
選んだデータベースの文法で読み取れないときは、整形せずにお知らせします。無理に改行して意味が変わるより良いからです。1行にまとめる機能は、そのまま使えます。
複数の文を一度に入れてもいいですか?
大丈夫です。セミコロンごとに区切って、空行で分けます。
1行にまとめると、コメントはどうなりますか?
コメントは削除しません。ただし、行コメントの後ろでは必ず改行します。そうしないと、後ろに来る内容がコメントに飲み込まれて、クエリが壊れるからです。


