Azure表存储服务2.0区分大小写的过滤器

本文关键字:大小写 过滤器 0区 存储 服务 Azure | 更新日期: 2023-09-27 18:17:23

如何在Azure表存储2.0上执行区分大小写的过滤器?

如果我执行这个查询
TableQuery.GenerateFilterCondition("ShortUrl", QueryComparisons.Equal, "Abc");

它将返回2条带有short turl "Abc"answers"Abc"的记录
生成的查询如下所示

/devstoreaccount1/Articles?$filter=shortUrl%20eq%20%27Abc%27&timeout=90

这里给出了1.7版本的解决方案,但这不适用于2.0版本。我已经检查了DataService文档,那里没有提到。

由于表存储查询基于OData协议,为什么它的行为不同,当比较字符串值。我确信Odata"eq"操作符应该是区分大小写的。
用这个查询检查OData Api Explorer

http://services.odata.org/V3/OData/OData.svc/Products?$filter= Name eq 'Bread'

那就改成bread

Azure表存储服务2.0区分大小写的过滤器

根据这里的文档:

过滤器字符串的所有部分都是区分大小写的。

所以我建议你尝试一个真正的表存储,而不是开发存储。如果您在真储服务上发现这种行为,请在这里再次书写,团队将会提醒!

也请使用最新的SDK/Tools(目前为2.0)。如果您在开发存储2.0中发现此行为,请再次更新您的问题,这可能是开发存储中的错误。

但无论如何,我建议您在测试此类"敏感"功能时使用真实存储帐户。我几乎从不使用开发存储帐户