如何在Azure Table存储2.0上执行区分大小写的过滤器?
如果我这样做的话
TableQuery.GenerateFilterCondition("ShortUrl", QueryComparisons.Equal, "Abc");
它将返回2条记录,其中包含shortUrl“Abc”和“ABC”
生成的查询显示如下
/devstoreaccount1/Articles?$filter=shortUrl%20eq%20%27Abc%27&timeout=90
版本1.7的解决方案显示为here,但这不适用于2.0版。我检查了DataService Documentation,但那里没有提到。
由于表存储查询基于OData协议,因此在比较字符串值时它的行为会有所不同。我确信Odata“eq”运算符应该区分大小写 使用此查询检查OData Api Explorer
http://services.odata.org/V3/OData/OData.svc/Products?$filter= Name eq 'Bread'
然后将其改为面包。
答案 0 :(得分:2)
根据文件here:
过滤字符串的所有部分都区分大小写。
所以我建议您尝试一个真正的表存储,而不是开发存储。如果您在真实存储服务上发现此行为,请再次写在此处,团队将收到提醒!
另请使用最新的SDK / Tools(目前为2.0)。如果您在开发存储2.0中发现此行为,请再次更新您的问题,这可能是开发存储中的错误。
但无论如何,我建议您在测试此类“敏感”功能时使用真实存储帐户。我几乎从不使用开发存储帐户。