ForHosting KIT · 開発者向けツール

フィルターからパラメーター化SQL WHERE句を作成

アプリケーションの構造化フィルター一覧を、データベースクライアントが必要とする2つの要素に変換します。位置パラメーター付きのSQL WHERE句と、順序を保った独立のパラメーター配列です。修飾名の各部分を含むすべてのフィールド名をSQL識別子として引用し、値はSQL本文に埋め込みません。フィルターは元の順序を維持してANDで結合されるため、クエリビルダー、管理ツール、レポート画面、フィルターをデータとして受け取るエンドポイントで予測可能な結果を得られます。

● Beta無料・ブラウザ内で実行
ご利用方法 ウェブAPIメールTelegramアプリ 近日

処理はブラウザ内で完結します。ファイルは送信されません。無料でご利用いただけます。

値を連結せずにSQL構造を組み立てます

動的な検索画面では、フィールド、演算子、値という一見安全なレコードから処理を始めることがよくあります。危険なのは、その値を文字列へ直接挿入してSQLに変換する段階です。このビルダーは構造とデータを分離します。$1や$2のようなPostgreSQL形式の位置パラメーターを含むパラメーター化SQL WHERE句と、完全に対応する順序のparams配列を返します。句をより大きなSELECT、UPDATE、DELETE文へ組み込み、paramsを互換性のあるデータベースドライバーへ渡してください。本機能はクエリを実行せず、データベースへ接続せず、スキーマを調査せず、呼び出し元が利用できる列も決定しません。利用者がフィールド名へ影響できる場合は、アプリケーション側で許可リストを維持する必要があります。識別子の引用は句読記号や予約語による構文破損を防ぎますが、認可はアプリケーションの責任です。フィルターを入力順にANDで結ぶため、出力は安定しており、記録、比較、固定クエリ接頭辞との結合も容易です。

演算子、パラメーター、NULL判定を理解します

等価、不等価、大小比較、LIKE、NOT LIKE、IN、NOT IN、IS NULL、IS NOT NULLを利用できます。演算子は大文字へ正規化され、連続する空白も1つにまとめられるため、「not like」のような入力から標準的なSQLが生成されます。通常の比較はそれぞれ1つのパラメーターを使用します。INとNOT INには空でない配列が必要であり、要素の順序を保ったまま、要素ごとに1つのプレースホルダーへ展開します。NULL判定演算子のSQL文法にはプレースホルダーがないため、値もパラメーターも不要です。それ以外の演算子で値が欠けている場合は、不完全なSQLを作らず入力エラーとして拒否します。文字列、数値、真偽値、nullを含むJSONスカラー値を使用でき、配列は2つのリスト演算子専用です。出力はPostgreSQLと対応ライブラリに適した番号付きドル形式を採用しています。ドライバーが疑問符や名前付きパラメーターを使う場合は、返された値の順序を維持したまま、管理されたアダプターで構文を変換してください。

識別子を引用し、アプリケーション方針を検証します

各フィールドは、修飾されている可能性がある識別子として扱います。users.created_atのような名前は2つの部分を個別に引用し、内部の二重引用符は標準SQL識別子規則に従って重ねてエスケープします。空の名前や、ドット間に空部分がある名前は拒否します。この処理により、フィールド文字列が引用されていないSQL構文として解釈されることを防げます。ただし、すべてのデータベースエンジンが同一の引用規則を持つという意味ではありません。特に二重引用符の規則に従わない製品では、対象データベースとの互換性をご確認ください。また、エスケープは権限付与ではありません。外部の呼び出し元がフィールドを選べる場合は、公開フィルターキーを明示的に許可した実列へマッピングしてからビルダーを呼び出してください。演算子にも業務ルールを適用し、たとえばレポート用エンドポイントでは等価と範囲だけを許可し、LIKE対応でもパターン検索を拒否できます。未対応のSQL演算子は、未知の構文を通さず明確な入力エラーになります。本機能は決定的に動作し、ネットワーク通信を行わず、句とパラメーターだけを返します。

APIエンドポイントのフィルターを処理します

検証済みのクエリ文字列フィルターを、データベース要求用の句と順序付きパラメーターへ変換します。

社内レポートクエリを構築します

レポートビルダーの行を、値をSQL本文へ挿入しないAND述語へ変換します。

テスト可能なリポジトリクエリを作成します

データアクセス層のテストで、決定的な句とパラメーター配列を別々にスナップショット化します。

料金はいくらですか?

APIリクエストは$0.002からです。対話的な用途にはブラウザー実行機能もご利用いただけます。

このツールはSQLを実行しますか?

いいえ。WHERE句と順序付きparams配列のみを返し、アプリケーションからデータベースドライバーへ渡します。

どのプレースホルダー構文を生成しますか?

PostgreSQL形式の番号付きプレースホルダー、つまり$1、$2などを生成します。

INとNOT INを使用できますか?

はい。空でない配列を値として指定すると、要素ごとにプレースホルダーを1つ作成します。

NULL判定はどのように表現しますか?

IS NULLまたはIS NOT NULLを使用します。値は不要で、paramsにも項目を追加しません。

識別子のエスケープで列の許可リストは不要になりますか?

いいえ。エスケープは構文を保護し、許可リストは呼び出し元が利用できる列や修飾名を決定します。

このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。

POSThttps://api.kit.forhosting.com/dev2/sql-where-builder

Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。

curl -X POST https://api.kit.forhosting.com/dev2/sql-where-builder \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"filters":[{"field":"users.status","operator":"=","value":"active"},{"field":"users.age","operator":">=","value":21}]}'
{
  "filters": [
    {
      "field": "users.status",
      "operator": "=",
      "value": "active"
    },
    {
      "field": "users.age",
      "operator": ">=",
      "value": 21
    }
  ]
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "dev2.sql_where_builder",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。

1リクエストあたり$0.002

単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。

max_items100
HTTPコード意味
401unauthorizedAPIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。
402insufficient_balance残高が不足しています。チャージ後に再度お試しください。
404unknown_type指定されたタスクタイプは存在しません。タイプ名を確認してください。
429rate_limitedリクエストが多すぎます。しばらく待ってから再度お試しください。

KITの完全なドキュメントを見る →