在 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
我有这样的数据库结构:
"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