LIKE - Cosmos DB 中的查询语言

关键字 LIKE 是布尔值,具体取决于特定字符串是否与指定的模式匹配。 模式可以包含常规字符和通配符。

小窍门

您可以使用 LIKE 关键字或 RegexMatch 系统函数编写逻辑上等效的查询。 无论选择哪个选项,都会观察到相同的索引利用率。 要使用的选项主要基于语法首选项。

注释

由于 LIKE 可以利用索引,因此你应该为使用 LIKE 进行比较的属性创建范围索引

可以将以下通配符与 LIKE 配合使用:

Description Example
% 包含零个或多个字符的任意字符串。 WHERE c.description LIKE "%SO%PS%"
_ (下划线) 任何单个字符。 WHERE c.description LIKE"%SO_PS%"
[ ] 指定范围()或集([a-f][abcdef])内的任何单个字符。 WHERE c.description LIKE "%SO[t-z]PS%"
[^] 不在指定范围([^a-f])或字符集([^abcdef])内的任何单个字符。 WHERE c.description LIKE "%SO[^abc]PS%"

% 字符与零个或多个字符的任何字符串匹配。 例如,通过在模式的开头和结尾放置一个 % ,以下查询将返回指定字段包含该短语的所有项作为子字符串:

SELECT VALUE
    p.name
FROM
    products p
WHERE
    p.name LIKE "%driver%"

如果只在模式末尾使用 % 字符,则只会返回描述以 fruit 开头的项:

SELECT VALUE
    p.name
FROM
    products p
WHERE
    p.name LIKE "fruit%"

同样,模式开头的通配符指示要匹配具有指定值作为前缀的值:

SELECT VALUE
    p.name
FROM
    products p
WHERE
    p.name LIKE "%Road"

NOT 关键字对 LIKE 关键字的表达式求值结果取反。 此示例返回与表达式不匹配LIKE的所有项。

SELECT VALUE
    p.name
FROM
    products p
WHERE
    p.name NOT LIKE "%winter%"

可以使用 ESCAPE 子句搜索包含一个或多个通配符字符的模式。 例如,如果您想搜索包含字符串 20% 的描述,您不会希望将 % 解释为通配符字符。 本示例将 ^ 解释为转义字符,因此您可以对 % 的某个特定实例进行转义。

SELECT VALUE
    p.name
FROM
    products p
WHERE
    p.description LIKE "%20^%%" ESCAPE "^"

可以将通配符括在括号中,以将它们视为文本字符。 将通配符括在括号中时,将删除任何特殊属性。 此表包含文本字符的示例。

已分析的值
LIKE "20-30[%]" 20-30%
LIKE "[_]n" _n
LIKE "[ [ ]" [
LIKE "]" ]