SQL整形・構文チェック
SQLの整形や圧縮、エラー位置(行・列)つきの構文チェックを、20種類の方言に対応してブラウザ上だけで行えます。
すべてブラウザ内で処理されます。SQLがサーバーにアップロードされることはありません。
オプション
.sql または .txt ファイルをここにドロップするか、貼り付け・サンプルの読み込みができます。Ctrl+Enterで実行します。
構文チェック
「有効」とは、この文法に照らして構文が正しいという意味です。チェックにはデータベースのスキーマがないため、テーブルや列が存在するか、クエリが実行できるかまでは判断できません。方言固有の構文やごく新しい構文は、お使いのデータベースで使えても、エラーとして扱われることがあります。
ブラウザでSQLを整形・圧縮・構文チェック
読みやすいSQLは、レビューやデバッグ、差分の確認がしやすくなります。このツールは、インデント・改行・大文字小文字をそろえてクエリを書き直します。MySQL、PostgreSQL、SQL Server(T-SQL)、SQLite、BigQuery、Snowflake、Redshift、Oracle PL/SQL、Hive、Spark、Trino、DB2など、約20種類の方言の癖にも対応しています。方言を選び、インデントはスペース2つ・4つ・タブから選択。キーワード・データ型・関数名は大文字、小文字、入力のままのいずれかにでき、チームの書き方に合わせてカンマを行頭に置くこともできます。
もう一つの機能が構文チェックです。スクリプトを貼り付けると、各文を個別に検証するので、どの文が通り、どの文が失敗したかが分かります。失敗した文には、行と列、問題のトークン、前後数行の内容に加え、可能な場合はキーワードのつづり間違い・末尾のカンマ・閉じ忘れた括弧といったヒントも表示されます。文の分割では、文字列、コメント、バッククォート、角括弧、PostgreSQLのドル記号で囲まれた本体を考慮するため、リテラル内のセミコロンで文が途中で切れることはありません。
圧縮は整形の逆の処理で、空白をまとめ、必要に応じてコメントも取り除いて、ログや設定ファイル、コードへの埋め込みに使いやすい1行のクエリにします。正規表現ではなくトークン単位で処理するため、文字列や引用符付きの名前の中身は書いたとおりに保たれます。
制限もご理解ください。チェックが緑でも、構文が選んだ文法に合っていることが分かるだけで、テーブルが存在することや、クエリが速い・正しいことまでは保証されません。方言によっては、手続き型のブロックや最新機能が一部しか対応していないものがあり、専用のチェックがない方言では、近い文法を自分で選んでいただきます。処理はすべて手元の端末で完結するため、本番環境のクエリも安心して貼り付けられます。ファイルが大きい場合は、ボタンを押すまでリアルタイムのプレビューが一時停止します。
よくある質問
「有効」と表示されれば、クエリは実行できますか?
いいえ。チェックするのは構文だけです。データベースには接続していないため、テーブルや列が存在するか、型に互換性があるか、権限があるかは分かりません。また独自の文法を使っているため、ごく新しい構文やベンダー固有の構文は、お使いのデータベースで動いてもエラーになることがあります。緑の表示は「SQLの形は正しい」、赤の表示は「この箇所を見直してください」という意味だとお考えください。
SQLはどこかにアップロードされますか?
いいえ。整形・圧縮・構文チェックはすべて、ブラウザ内のバックグラウンドワーカーで処理されます。サーバーには何も送信されません。任意で保存される下書きと設定も、このブラウザのローカルストレージにだけ保存されます。
整形はできるのに、チェックではエラーになるのはなぜですか?
この2つは別のツールだからです。整形はトークンと句を見分けられれば動くため、多少の誤りには寛容です。一方、構文チェックは選んだ方言の完全な文法を使うので、より厳密です。結果が食い違うと警告が表示されます。結果自体は表示されますが、指摘された箇所は確認しておくことをおすすめします。
圧縮すると、クエリの動作は変わりますか?
取り除くのは空白とコメントだけです。文字列、引用符付きの識別子、ドル記号で囲まれたブロック、オプティマイザヒントは1文字ずつそのままコピーされ、隣り合っていたトークンは隣り合ったままです。念のため、MySQLのDELIMITERブロックのように改行に依存するスクリプトは圧縮しないでください。