与Azure CosmosDB中的查询一样

时间:2018-05-29 06:14:06

标签: azure azure-cosmosdb azure-cosmosdb-sqlapi

我想通过以下查询从Cosmos DB中检索数据:

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

(这是一个sql查询,我可以在mysql中使用)

这是pi一个字符串值。这可以是09001001或09025001。

有没有办法在Cosmos DB中使用like命令。 我知道cosmos DB使用CONTAINS,但是当类似的通配符不在字符串的开头或结尾时,不能使用它。

2 个答案:

答案 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可能进行的所有索引优化。尽管允许使用更复杂的模式。

相关问题