如何在Cosmos DB中使用NOT LIKE及实现CONTAINS取反查询?
在Cosmos DB中实现“邮箱不包含指定域名”的查询方法
嘿,我来帮你搞定这个Cosmos DB的查询需求!你现在需要筛选出邮箱地址不包含xerox.com的用户,其实只需要对现有的CONTAINS查询做反向处理就行,下面给你几种实用的方案:
基础反向查询(直接取反)
你当前的查询是返回包含目标域名的用户,只需要在CONTAINS前面加上NOT运算符,就能得到反向结果:SELECT * FROM c WHERE NOT CONTAINS(c.email, "xerox.com", false)这个语句会排除所有邮箱字段中包含
xerox.com的文档,返回剩下的所有用户。处理空值/未定义字段的情况
如果你的集合里存在没有email字段,或者email为null的文档,上面的查询会把这些文档也包含进来。如果只想要有合法邮箱且不包含目标域名的用户,可以加上空值判断:SELECT * FROM c WHERE IS_DEFINED(c.email) AND c.email IS NOT NULL AND NOT CONTAINS(c.email, "xerox.com", false)IS_DEFINED(c.email)确保文档存在email字段,c.email IS NOT NULL确保该字段不为空,这样就能过滤掉不符合要求的无效数据。使用
NOT LIKE替代方案
Cosmos DB支持LIKE运算符,你也可以用它来实现类似的“不包含”查询,效果和CONTAINS一致:SELECT * FROM c WHERE c.email NOT LIKE "%xerox.com%"这里的
%是通配符,代表任意长度的字符(包括0个字符),NOT LIKE "%xerox.com%"就表示邮箱中不包含xerox.com这个子串。同样,如果需要过滤空值,也可以加上前面提到的空值判断条件。
内容的提问来源于stack exchange,提问作者Preeti
相关产品推荐
相关产品推荐

