クエリで変数を実装する
SDK 側では、多くの一般的な外積クエリを実装できるため、結果のサイズと複雑さでクエリが分割されるのを防ぐためにフィルターを追加することが必要になる場合があります。 SDK 内で使用可能なクラスとメソッドを使用して、クエリ パラメーターを追加して、SQL クエリの WHERE フィルターの値をすばやく調整できます。
JOIN と WHERE フィルターを使用する SQL クエリの例を見てみることにしましょう。
SELECT
p.name,
t.name AS tag
FROM
products p
JOIN
t IN p.tags
WHERE
p.price > 500
C# では、通常、次の構文を使用してクエリ定義を作成し、値は文字列値に 500 ハードコーディングします。
string sql = "SELECT p.name, t.name AS tag FROM products p JOIN t IN p.tags WHERE p.price > 500"
QueryDefinition query = new (sql);
ただし、.WithParameter(string, string) というフルーエントメソッドを使用すると、クエリにパラメータを追加でき、クエリ内のパラメータを簡単に設定できます。
string sql = "SELECT p.name, t.name AS tag FROM products p JOIN t IN p.tags WHERE p.price > @lower"
QueryDefinition query = new (sql)
.WithParameter("@lower", 500);
より複雑なクエリで複数のパラメーターを使用することもできます。
string sql = "SELECT p.name, t.name AS tag FROM products p JOIN t IN p.tags WHERE p.price >= @lower AND p.price <= @upper"
QueryDefinition query = new (sql)
.WithParameter("@lower", 500)
.WithParameter("@upper", 1000);
Python では、通常、次の構文を使用してクエリ定義を作成し、値は文字列値に 500 ハードコーディングします。
query_text = "SELECT p.name, t AS tag FROM products p JOIN t IN p.tags WHERE p.price > 500"
query = {"query": query_text}
ただし、クエリにパラメーターを動的に使用すると、実行時に WHERE フィルター値を調整できます。 Python SDK を使用してパラメーターを追加する方法を次に示します。
query_text = "SELECT p.name, t AS tag FROM products p JOIN t IN p.tags WHERE p.price > @lower"
query = {
"query": query_text,
"parameters": [
{"name": "@lower", "value": 500}
]
}
より複雑なクエリで複数のパラメーターを使用することもできます。
query_text = (
"SELECT p.name, t AS tag "
"FROM products p JOIN t IN p.tags "
"WHERE p.price >= @lower AND p.price <= @upper"
)
query = {
"query": query_text,
"parameters": [
{"name": "@lower", "value": 500},
{"name": "@upper", "value": 1000}
]
}
JavaScript では、通常、文字列値に 500 ハードコーディングされた値を持つ次の構文を使用してクエリ定義を作成します。
const sql = "SELECT p.name, t.name AS tag FROM products p JOIN t IN p.tags WHERE p.price > 500";
ただし、クエリにパラメーターを動的に使用すると、実行時に WHERE フィルター値を調整できます。 JavaScript SDK を使用してパラメーターを追加する方法を次に示します。
const sql = "SELECT p.name, t.name AS tag FROM products p JOIN t IN p.tags WHERE p.price > @lower";
const querySpec = {
query: sql,
parameters: [
{ name: "@lower", value: 500 }
]
};
より複雑なクエリで複数のパラメーターを使用することもできます。
const sql = "SELECT p.name, t.name AS tag FROM products p JOIN t IN p.tags WHERE p.price >= @lower AND p.price <= @upper";
const querySpec = {
query: sql,
parameters: [
{ name: "@lower", value: 500 },
{ name: "@upper", value: 1000 }
]
};
パラメーター化クエリの利点
- セキュリティの強化: SQL インジェクション攻撃の防止に役立ちます。
- 柔軟性: SQL クエリ構造を変更することなく、クエリ フィルターを動的に変更できます。
- コードの再利用性: 異なるパラメーター値を持つ複数のクエリ間でクエリ定義を再利用しやすくなります。