参数化查询 - Cosmos DB 中的查询语言(在 Azure 和 Fabric 中)

Cosmos DB(在 Azure 和 Fabric 中)支持使用熟悉的 @ 表示法表示的参数进行查询。 参数化 SQL 提供用户输入的可靠处理和转义,并防止通过 SQL 注入意外泄露数据。

例子

例如,可以编写一个作为 upperPriceLimit 参数的查询,并针对基于用户输入的各种值 price 执行该查询。

SELECT
    *
FROM
    p
WHERE
    (NOT p.onSale) AND
    (p.price BETWEEN 0 AND @upperPriceLimit)

然后,可以将此请求作为参数化 JSON 查询对象发送到 Cosmos DB。

{
  "query": "SELECT * FROM p WHERE (NOT p.onSale) AND (p.price BETWEEN 0 AND @upperPriceLimit)",
  "parameters": [
    {
      "name": "@upperPriceLimit",
      "value": 100
    }
  ]
}

下一个示例使用参数化查询设置 TOP 参数:

{
  "query": "SELECT TOP @pageSize * FROM products",
  "parameters": [
    {
      "name": "@pageSize",
      "value": 10
    }
  ]
}

参数值可以是任何有效的 JSON:字符串、数字、布尔值、null,甚至数组或嵌套 JSON。 由于 Cosmos DB 是无架构的,因此不会针对任何类型的参数进行验证。

下面是每个 Cosmos DB SDK 中参数化查询的示例: