SQL の位置パラメータの数え上げ
SQL の $1, $2… が、いくつ・どこまで使われているかを数える。
SQL を貼り付けると、PostgreSQL の位置パラメータ($1, $2…)の最大番号・使われている番号・欠番・出現回数を一覧にします。文字列・コメント・ドル引用符の中の $n は数えません。入力はブラウザの外へ送信しません。
SQL を貼り付けて $1, $2… の個数を確かめる
入力した内容は送信されません。貼り付けた文字や選んだファイルは、お使いのブラウザの中だけで処理します。本サイトのサーバーや第三者へ送信・保存しません(通信を禁止する設定でページを配信しています)。
結果
エラー 0 件・警告 0 件・情報 0 件
指摘(エラー・警告・情報)
指摘はありません。
| 最大番号 | $2 |
|---|---|
| 使われている番号の数 | 2 個 |
| 欠番 | なし |
プレースホルダの一覧
| プレースホルダ | 出現回数 | 行 |
|---|---|---|
| $1 | 1 | 1 行目 |
| $2 | 1 | 1 行目 |
初期表示は入力例「ふつうの検索条件 2 つ」の結果です。入力を変えるとその場で処理し直します。判定の根拠は仕様と根拠にまとめています。
ご利用にあたって
- 結果は字句の読み取りにもとづく確認で、実際のクエリが正しく実行できることを保証するものではありません。
- ドキュメントは PostgreSQL License で公開されています。このサイトはその内容を要約して参照しており、転載はしていません。
使い方
- アプリのコードやログから、プリペアドステートメントとして実行する SQL をコピーして貼り付けます。
- PostgreSQL の $1, $2… だけを数えるなら「$1, $2…」を、? や :名前 も数えたいときは後者を選びます。
- 渡す値の個数がわかっていれば入力します。最大番号と合わないときに警告が出ます。
- 表で番号ごとの出現回数を見て、欠番や想定外の番号がないことを確かめます。
入力例と結果
代表的な入力・境界の入力・壊れた入力の例です。例ごとに入力・出力・指摘と、その結果になる理由(検算)を載せています。
| 入力例 | 結果 |
|---|---|
| ふつうの検索条件 2 つ | エラー 0 件・警告 0 件・情報 0 件 |
| $2 が抜けた INSERT | エラー 0 件・警告 1 件・情報 0 件 |
| 同じ番号の再利用と個数の不一致 | エラー 0 件・警告 1 件・情報 1 件 |
| 文字列・識別子・コメントの中の $ | エラー 0 件・警告 0 件・情報 0 件 |
| 引用符が閉じていない SQL | エラー 1 件・警告 0 件・情報 0 件 |
| $n と ? と :名前 の混在 | エラー 0 件・警告 1 件・情報 0 件 |
このツールでできないこと(制約)
- 型の推論(PREPARE の型リストと実際の値の型の対応)は判定しません。番号と個数を数えるだけです。
- 完全な SQL の構文解析はしません。関数本体の $1 など、文脈で意味が変わる使い方は字句のとおりに数えます。
- ? と :名前 は PostgreSQL 自体の記法ではなく、ドライバーなどの別の層の書き方です。数えるのは見つけた個数だけで、仕様の根拠はありません。
- 貼り付けた SQL の実行や、DB への接続はできません。
よくある質問
文字列の中に $1 と書いてあっても数えますか?
数えません。単一引用符の文字列・ドル引用符・コメント・二重引用符つき識別子の中の $1 はパラメータではないため、数えずに読み飛ばします。
渡す値の個数が合わないとどうなりますか?
PREPARE の公式ページには個数が合わない場合の動作が書かれていないため、このツールは断定しません。警告で食い違いを知らせるので、使っている DB やドライバーで実際の動作を確かめてください。
貼り付けた SQL はどこかに送られますか?
送られません。数える処理はお使いのブラウザの中だけで行い、ページは通信を禁止する設定(CSP の connect-src)で配信しています。