arj*_*oon 12 azure azure-cosmosdb azure-cosmosdb-sqlapi
我想通过以下查询从Cosmos DB中检索数据:
pi
(这是一个sql查询,我可以在mysql中使用)
这是pi一个字符串值.这可以是09001001或09025001.
那么有没有办法在Cosmos DB中使用like命令.我知道cosmos DB使用CONTAINS,但是当类似的通配符不在字符串的开头或结尾时,不能使用它.
Saj*_*ran 22
目前Azure Cosmosdb支持CONTAINS,STARTSWITH以及ENDSWITH内置的功能,这相当于等.
Cosmosdb中LIKE的关键字是COntains.
SELECT * FROM c WHERE CONTAINS(c.pi, '09')
Run Code Online (Sandbox Code Playgroud)
另一种可能性是创建您自己的用户定义函数。例如,这是一个正则表达式检查:
function matchRegex(str, pattern) {
let regex=RegExp(pattern);
return regex.test(str);
}
Run Code Online (Sandbox Code Playgroud)
以该名称创建,MATCH_REGEX然后可以像这样使用:
SELECT udf.MATCH_REGEX("09001001", "^09.*001$")
Run Code Online (Sandbox Code Playgroud)
请注意:它会杀死任何索引优化STARTSWITH。尽管允许更复杂的模式。因此,使用能够使用索引来缩小搜索范围的附加过滤器可能是有益的。例如,StartsWith(c.property1, '09')在子句中用作上述示例的补充WHERE。
更新:
Cosmos 现在有一个RegexMatch function可以做同样的事情。虽然 MongoApi 的文档提到$regex如果遵循某些规则,可以使用索引来优化查询,但 SqlApi 的情况似乎并非如此(目前)。
| 归档时间: |
|
| 查看次数: |
4869 次 |
| 最近记录: |