在 cosmos sql 查询中处理 ARRAY_CONTAINS 搜索中的特殊字符

Handling special characters in ARRAY_CONTAINS search in cosmos sql query

我有这样的数据库结构:

"selfId": "cd29433e-f36b-1410-851b-009d805073d7",
"selfName" : "A",
"bookIds": [
    "2f51bfd4",
    "2f3a1010",
    "090436c0",
    "1078c3b2",
    "b63b06e0"
]

我正在使用 C# 并获取 bookId 作为字符串。 我将查询写为:

string SQLquery = string.Format("select c.selfName from c where ARRAY_CONTAINS(c.bookIds,\""+bookId+"\"");

但是当bookId包含特殊字符时,查询就会报错。例如,如果 bookId = "AK"s" book"(请注意 id 本身包含 "),则执行 sqlQuery 会出错。

当文本包含引号、斜杠、特殊字符时,您可以使用转义序列

引用的 属性 运算符 [""] 也可用于访问属性。例如,SELECT food.id 和 SELECT food["id"] 是相等的。此语法可用于使用空格、特殊字符或与 SQL 关键字或保留字相同的名称来转义 属性。

示例:

SELECT food["id"]
FROM food 
WHERE food["foodGroup"] = "Snacks"  and food["id"] = "19015"

参考:- https://docs.microsoft.com/en-us/azure/cosmos-db/sql/sql-query-constants#bk_arguments