我想通过以下查询从Cosmos DB中检索数据:
SELECT * FROM c WHERE c.pi like '09%001'
(这是一个sql查询,我可以在mysql中使用)
这是pi一个字符串值。这可以是09001001或09025001。
有没有办法在Cosmos DB中使用like命令。 我知道cosmos DB使用CONTAINS,但是当类似的通配符不在字符串的开头或结尾时,不能使用它。
答案 0 :(得分:8)
目前 Azure Cosmosdb
支持 CONTAINS
, STARTSWITH
和 {{ 1}} 内置函数,相当于LIKE。
Cosmosdb中LIKE的关键字是Contains。
ENDSWITH
答案 1 :(得分:2)
另一种可能性是创建自己的用户定义函数。例如,这是一个正则表达式检查:
function matchRegex(str, pattern) {
let regex=RegExp(pattern);
return regex.test(str);
}
以名称MATCH_REGEX
创建,然后可以像下面这样使用:
SELECT udf.MATCH_REGEX("09001001", "^09.*001$")
请注意:它将杀死例如STARTSWITH
可能进行的所有索引优化。尽管允许使用更复杂的模式。