我想使用以下查询从Cosmos DB检索数据:

SELECT * FROM c WHERE c.pi like '09%001'

(这是一个SQL查询,可以在MySQL中使用)

在这里,pi是一个字符串值,可以是0900100109025001

有没有一种方法可以在Cosmos DB中使用LIKE命令?

我知道cosmos DB使用CONTAINS,但是当您要专门匹配字符串的开头或结尾时,就不能使用它。

最佳答案

另一种可能性是创建自己的用户定义函数。例如,这是一个正则表达式检查:

function matchRegex(str, pattern) {
    let regex=RegExp(pattern);
    return regex.test(str);
}

MATCH_REGEX名称创建后,可以像以下方式使用:

SELECT udf.MATCH_REGEX("09001001", "^09.*001$")

注意:它将杀死STARTSWITH这样的索引优化。尽管允许更复杂的模式。

关于azure - 如何在Azure CosmosDB中编写LIKE查询?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50577461/

10-10 03:00