我在Azure表存储中有一个表,其分区键如下
__(其中是某种非固定长度的字符串)
和示例可以是"96a38291-c654-461f-a344-6d0157c382b9__6960"
我想我得到了我想要的正确的过滤器,并希望澄清为什么它的工作。在上述模式下,__后面有许多不同的guids和后缀。
执行类似(PartitionKey ge '96a38291-c654-461f-a344-6d0157c382b9') and (PartitionKey le '96a38291-c654-461f-a344-6d0157c382b9a')
我将获得guid等于96a38291-c654-461f-a344-6d0157c382b9的所有实体(注意第二部分末尾的小a)。
我刚刚用几个guid和后缀测试了它,它似乎只返回匹配guid的行。有人能解释为什么这是有效的,如果有情况下,它不会工作,概述那些。您可以假设该guid总是具有相同长度的有效guid。
我认为这是与字符串的比较是从左字符先完成的
它工作是因为它是一个字符串比较;您正在请求所有以'guid'开头并且'小于'guida'的行。因为小写字母"a"在ASCII表中大于"",所以"a"可以作为搜索的上边界。所以'guid'小于'guida'。
在使用guid作为大于值和guid + 'a'作为小于值时,您只选择了以guid后跟小于'a'的ascii字符开头的分区,其中'_'是。
如果这个解释不合理,请告诉我。
谢谢!