SQL整形ツールの使い方
- クエリを1つ、またはスクリプト全体を貼り付けます。セミコロンで区切った複数の文もそのまま整形できます。
- 方言でお使いのデータベースを選ぶと、その引用符の規則で読み取ります(下の表)。キーワードは大文字、小文字、書かれたままから選べます。
- 整形を選ぶと句ごとに改行してスペース2つ・4つ・タブで字下げし、1行にまとめるを選ぶと、ログや設定ファイル、プログラムの文字列に入れやすいよう各文を1行にします。
- 結果の横のコピーを押すか、ダウンロードで .sql ファイルとして保存します。
整形のルール
このツールはSQLをキーワード、名前、文字列、数値、演算子、コメントといった単位(トークン)に分け、いくつかの決まったルールで並べます。
- 主な句は行頭から:
SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY、SET、VALUES、RETURNINGは1行を占め、中身はその下に字下げして並べます。LIMIT、UNION、INSERT INTO、UPDATE、DELETE FROM、WITH、CREATE TABLEは中身を同じ行に続けます。 - リストは1行に1項目:
SELECTの列、VALUESの行、SETの代入、CREATE TABLEの列定義、WITHの共通テーブル式です。関数呼び出しやIN (…)の中のカンマでは改行しません。 - 結合は
FROMの下に字下げし、ONは同じ行に置きます。WHERE、HAVING、結合条件のANDとORはそれぞれ新しい行から始めます。ただしBETWEEN … AND …のANDは別です。 - 副問い合わせは入れ子に:
SELECTを囲むかっこは1段深く字下げし、閉じかっこを独立した行に置きます。CASEはWHENとELSEをそれぞれ1行にし、ENDをCASEにそろえます。 - 文と文のあいだには空行を入れます。
変えないもの
文字列、引用符付きの名前("Order"、`order`、[受注日])、数値、コメント、PostgreSQLのドル引用符で囲んだ本体は、書かれたとおりにコピーします。大文字・小文字を変えるのはSQLのキーワードと、かっこの直前にある COUNT( や COALESCE( のような組み込み関数の名前だけです。テーブル名や列名はつづりを保ち、データベースによってはキーワードでも列名によく使われる語(date、name、status、type、value、timestamp)もそのままです。t.order のようにドットのあとに来る語は常に名前として扱います。顧客 や 都道府県 のような日本語のテーブル名・列名も名前として扱い、変えません。空白以外は何も足したり削ったりしないので、整形したクエリの結果は元と同じです。
計算例:今年度の上位顧客を集計するクエリ
入力欄のサンプルは、コメント、CASE 式、2つの条件をもつ結合、IN のリスト、HAVING 句を含む1行の集計クエリです。日本の会計年度に合わせて4月1日以降の注文を対象にしています。初期設定で整形すると次のようになります。
-- 今年度の上位顧客
SELECT
c.id,
c.name,
COUNT(o.id) AS orders,
SUM(o.total) AS spent,
CASE
WHEN SUM(o.total) > 100000 THEN 'ゴールド'
ELSE '一般'
END AS rank
FROM
customers c
LEFT JOIN orders o ON o.customer_id = c.id
AND o.status <> 'キャンセル'
WHERE
o.created_at >= '2026-04-01'
AND c.pref IN ('東京都', '大阪府')
GROUP BY
c.id,
c.name
HAVING
COUNT(o.id) > 2
ORDER BY
spent DESC
LIMIT 10;
コメントは独立した行のまま、日本語の文字列は引用符ごとそのまま、別名の c、o、spent も大文字・小文字を保っています。副問い合わせと共通テーブル式は次のようになります。
WITH recent AS (
SELECT
customer_id
FROM
orders
WHERE
created_at > NOW() - INTERVAL '30 days'
)
SELECT
name
FROM
customers
WHERE
id IN (
SELECT
customer_id
FROM
recent
)
方言の違い
SQLの書き方はデータベースごとに少しずつ違い、特に引用符の使い方が異なります。方言の選択は、テキストをどう読むかを決めるだけで、SQLを別のデータベース向けに書き換えることはしません。
| 方言 | 読み方の違い |
|---|---|
| 標準SQL | 'テキスト'(中の引用符は '')、"名前"、-- コメント、/* コメント */ |
| MySQL / MariaDB | "テキスト" も文字列、バックスラッシュでエスケープ('It\'s')、`名前`、# コメント。-- はあとにスペースがあるときだけコメント |
| PostgreSQL | $$ … $$ と $tag$ … $tag$ の本体をまとめて保持、バックスラッシュが使える E'…'、入れ子の /* /* */ */、:: の型変換、$1 のパラメータ |
| SQL Server(T-SQL) | [名前](中の ] は ]])、N'テキスト'、@変数、#一時テーブル、入れ子のコメント、独立した行の GO はバッチの区切り |
| Oracle(PL/SQL) | q'[It's]' の代替引用符、:バインド変数 |
| SQLite | "名前" に加えて [名前] と `名前`。?、?1、:name、@name、$name のパラメータ |
この違いは結果を左右します。'It\'s' はMySQLでは完結した文字列ですが、標準SQLではバックスラッシュはただの文字なので、2つ目の引用符で文字列が終わり、3つ目が閉じない文字列を始めてしまいます。方言が違うと「文字列が閉じていません」と表示されることがあります。日本の業務システムで多いSQL ServerやOracleのクエリは、それぞれの方言を選んでください。
報告するエラー
このツールは完全なSQLパーサーではなく、クエリがお使いのデータベースで正しいかまでは調べません。止まるのは、トークンの終わりがわからない場合だけです。閉じていない文字列、引用符付きの名前、コメント、ドル引用符の本体、対応のないかっこ、そしてワープロやチャットから貼り付けたカーブした引用符(‘ ’ “ ”)です。どれも行と列を示し、該当箇所に ^ の印を付けます。
制限とヒント
- 全角スペースに注意:日本語入力のまま打った全角スペースは、このツールでは単語の一部として扱われ、
select aは1つの語のまま整形されません。データベースでも構文エラーの原因になるので、半角スペースに置き換えてください。テキストエディタの「全角スペースを表示」機能で見つけられます。 - 手続き型のコード(PL/pgSQL、T-SQLの
BEGIN … END、PL/SQLのパッケージ)は通常の文と同じように並べます。PostgreSQLの関数本体を$$で囲んでいれば、そのまま残ります。 - 長いリスト:
IN (…)の長いリストや長い関数呼び出しは1行のままです。 - 1行にまとめる場合も
--コメントは残すので、そのあとでは改行が入ります。それ以外は1文が1行になります。 - JSONを返すクエリの結果を確認するならJSON整形、SQLで使う正規表現を試すなら正規表現チェッカーが使えます。
SQLはお使いの端末から出ません
整形はすべてブラウザの中で行われます。クエリにはテーブルの構造や顧客のデータが含まれることもありますが、アップロードも記録もされず、保存もされないので、ページを再読み込みすると消えます。
よくある質問
SQLはサーバーに送られますか?
いいえ。整形はブラウザのJavaScriptで行い、何も送信しません。社内のテーブル構造や本番のクエリにも安心して使え、ページを一度開けばオフラインでも動きます。
整形するとクエリの結果は変わりますか?
変わりません。変えるのは空白とキーワードの大文字・小文字だけで、文字列、名前、数値、コメントは書かれたとおりです。SQLのキーワードは大文字・小文字を区別しないので、結果は同じです。
「文字列が閉じていません」と表示されるのはなぜですか?
文字列の閉じる引用符が抜けているか、方言が合っていないかのどちらかです。MySQLのように \' でエスケープするSQLを標準SQLとして読むと、文字列がそこで終わってしまいます。方言でお使いのデータベースを選んでください。
キーワードは大文字と小文字のどちらがいいですか?
どちらでも動きます。キーワードを大文字、テーブル名や列名を小文字にすると見分けやすいので、大文字が昔からよく使われます。チームの規約があればそれに合わせ、書かれたままを選べば元の書き方を保てます。
日本語のテーブル名や列名は使えますか?
使えます。このツールは日本語の名前を名前として扱い、そのまま残します。ただし全角スペースで区切ると1つの語とみなされるので、区切りには半角スペースを使ってください。
最終更新日:2026年10月16日