2

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

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

它将返回 2 条带有 shortUrl "Abc" 和 "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'

然后换成面包。

4

1 回答 1

3

根据此处的文档:

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

所以我建议你尝试一个真正的表存储,而不是开发存储。如果您在真实的Storage服务上发现此行为,请在此再写,团队会收到警报!

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

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

于 2013-06-08T20:32:18.700 回答