是否可以在DocumnetDb上执行不区分大小写的搜索?
假设我有一个'name'键和值为“Timbaktu”的记录
这将有效:
select * from json j where j.name = "Timbaktu"
这不会:
select * from json j where j.name = "timbaktu"
那你怎么做一个不区分大小写的搜索呢?
提前致谢。
问候。
答案 0 :(得分:18)
有两种方法可以做到这一点。 1.使用内置的LOWER / UPPER功能,例如,
select * from json j where LOWER(j.name) = 'timbaktu'
这需要扫描。另一种更有效的方法是存储“规范化”形式,例如小写并用于查询。例如,JSON将是
{ name: "Timbaktu", nameLowerCase: "timbaktu" }
然后用它来查询:
select * from json j WHERE j.nameLowerCase = "timbaktu"
希望这有帮助。
答案 1 :(得分:1)
Cosmos最近为字符串函数添加了不区分大小写的选项:
您现在可以选择进行这些字符串比较 不区分大小写:包含,EndsWith,StringEquals和StartsWith。 并且这些方面已经实现了显着的性能改进 字符串系统函数。这四个字符串系统函数中的每个函数 现在受益于索引,因此延迟将大大降低 和请求单位(RU)消耗。
答案 2 :(得分:0)
也许这是一个古老的案例,我只想提供一种解决方法。
您可以在天蓝色的宇宙数据库中使用UDF。
udf:
function userDefinedFunction(str){
return str .toLowerCase();
}
并使用以下sql查询结果:
SELECT c.firstName FROM c where udf.lowerConvert(c.firstName) = udf.lowerConvert('John')