【发布时间】:2019-10-07 16:07:33
【问题描述】:
我存储了一些数据,其中分区键包含感叹号,当我对该分区键进行查询时,我得到了奇怪的结果。
我尝试了以下方法。假设分区键是 t!est
我已经尝试了以下查询,结果令人尊敬
PartitionKey eq 't!est' = Noting returned
PartitionKey gt 't!est' = Noting returned
PartitionKey ge 't!est' = Noting returned
PartitionKey lt 't!est' = Record returned (Along side others)
PartitionKey le 't!est' = Record returned (Along side others)
我原以为 equals 至少会检索到我的记录。有什么我不明白的吗?
测试:
- SDK .Net 版本 7.2.1
- SDK .Net 9.3.3 版
- Microsoft Azure 存储资源管理器版本 1.8.1
【问题讨论】:
-
您确定它是感叹号,而不是看起来像但具有不同 unicode 代码点的东西?但不确定是否存在这样的符号。您有什么方法可以检索正在使用的分区键以检查其中的实际内容吗?
-
@LasseVågsætherKarlsen 是的,我确实手动检索了它,我很确定它是一个感叹号,我什至用虚拟数据进行了测试并自己输入了感叹号,结果仍然相同
-
非常有趣的观察。我能够重现这个问题。这是我注意到的。当我指定像
PartitionKey eq 'te!st'这样的查询时,我没有得到任何结果。但是,当我指定像PartitionKey neq 'te!st'这样的无效查询时,我显然会收到一条错误消息。有趣的是,在我的查询中,!更改为not,因此实际发送到存储的查询是PartitionKey eq 'tenottest'。我用 Node SDK 试过了。让我也试试 .Net SDK。 -
@GauravMantri 我已经从 .Net SDK 和 azure storage explorer 中尝试过,它们的行为与您描述的相同。非常感谢您对此有所了解。
-
由于某种原因,我无法使用 .Net SDK 重现此问题。您能否编辑您的问题并包含更多详细信息,例如 SDK 版本、您的代码等。我可以理解 Storage Explorer,因为它使用 Node SDK 并且存在问题。我在 GitHub 上为 Node SDK 打开了一个问题:github.com/Azure/azure-storage-node/issues/588。
标签: c# .net azure encoding azure-storage