为表设计器创建过滤器字符串

备注

本文适用于 Azure Azure 云服务(扩展支持)。 云服务(经典版)自 2024 年 8 月 31 日起停用。 有关详细信息,请参阅 云服务(经典)部署模型将于 2024 年 8 月 31 日停用。 对于新开发,我们建议使用专为特定目的设计的较新服务类型,例如 Azure 应用服务Azure FunctionsAzure 容器应用。 有关可用服务的最新列表,请参阅 Azure 产品目录

若要筛选 Visual Studio 表设计器中显示的 Azure 表中的数据,请构造筛选器字符串并将其输入到筛选器字段中。 筛选器字符串语法由 WCF 数据服务定义,类似于 SQL WHERE 子句,但通过 HTTP 请求发送到表服务。 表设计器 处理正确的编码,因此若要根据所需的属性值进行筛选,只需在筛选器字段中输入属性名称、比较运算符、条件值和布尔运算符(可选)。 不需要像构造 URL 以通过存储服务 REST API 参考来查询表时那样包括 $filter 查询选项。

WCF 数据服务基于 开放数据协议(OData)。 有关筛选器系统查询选项($filter)的详细信息,请参阅 OData URI 约定规范

比较运算符

所有属性类型都支持以下逻辑运算符:

逻辑运算符 描述 示例筛选器字符串
eq 等于 City eq 'Redmond'
gt 大于 Price gt 20
ge 大于或等于 Price ge 10
lt 小于 Price lt 20
le 小于或等于 Price le 100
ne 不等于 City ne 'London'
Price le 200 和 Price gt 3.5
or Or Price le 3.5 or Price gt 200
not isAvailable

构造筛选器字符串时,以下规则非常重要:

  • 使用逻辑运算符将属性与值进行比较。 无法将属性与动态值进行比较;表达式的一侧必须是常量。
  • 筛选器字符串的所有部分都区分大小写。
  • 常量值必须与属性具有相同的数据类型,以便筛选器返回有效结果。 有关支持的属性类型的详细信息,请参阅 了解表服务数据模型

对字符串属性进行筛选

筛选字符串属性时,请将字符串常量括在单引号中。

以下示例对 PartitionKeyRowKey 属性进行筛选;还可以将其他非键属性添加到筛选器字符串:

PartitionKey eq 'Partition1' and RowKey eq '00001'

可以将每个筛选器表达式括在括号中,尽管这不是必需的:

(PartitionKey eq 'Partition1') and (RowKey eq '00001')

表服务不支持通配符查询,表设计器也不支持它们。 但是,可以通过对所需前缀使用比较运算符来执行前缀匹配。 以下示例返回以字母“A”开头的 LastName 属性的实体:

LastName ge 'A' and LastName lt 'B'

对数值属性进行筛选

若要筛选整数或浮点数,请指定没有引号的数字。

此示例返回值为大于 30 的 Age 属性的所有实体:

Age gt 30

此示例返回值为小于或等于 100.25 的 AmountDue 属性的所有实体:

AmountDue le 100.25

对布尔属性进行筛选

若要根据布尔值进行筛选,请指定 truefalse 而不带引号。

以下示例返回 IsActive 属性设置为 true true的所有实体:

IsActive eq true

还可以在没有逻辑运算符的情况下编写此筛选器表达式。 在以下示例中,Table 服务还将返回 IsActive 为 true 的所有实体

IsActive

若要返回 IsActive 为 false 的所有实体,可以使用 not 运算符:

not IsActive

对 DateTime 属性进行筛选

若要筛选 DateTime 值,请指定 datetime 关键字,后跟单引号中的日期/时间常量。 日期/时间常量必须采用组合 UTC 格式,如 设置 DateTime 属性值中所述。

以下示例返回 CustomerSince 属性等于 2008 年 7 月 10 日的实体:

CustomerSince eq datetime'2008-07-10T00:00:00Z'