為資料表設計工具設計篩選字串架構
注意
本文適用於 Azure Azure 雲端服務(外延支援)。 截至2024年8月31日,雲端服務(經典)已退休。 如需詳細資訊,請參閱 雲端服務(傳統)部署模型將於 2024 年 8 月 31 日淘汰。 針對新的開發,我們建議您使用專為特定用途設計的較新服務類型,例如 Azure App Service、Azure Functions 或 Azure 容器應用程式。 如需可用服務的最新清單,請參閱 Azure 產品的目錄。
若要在 Visual Studio [資料表設計工具] 中顯示的 Azure 資料表中篩選資料,您可以建構篩選字串並在篩選欄位中輸入它。 篩選條件字串語法由 WCF Data Services 定義,類似於 SQL WHERE
子句,但會透過 HTTP 要求傳送至表格服務。 [資料表設計工具] 會為您處理適當的編碼,因此,若要篩選所需的屬性值,您只需要在篩選欄位中輸入屬性名稱、比較運算子、準則值和 (選擇性) 布林運算子。 您不需要像透過 儲存體服務 REST API 參考建構 URL 來查詢資料表一樣包含 $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 and Price gt 3.5 |
或 | Or | Price le 3.5 or Price gt 200 |
not | Not | not isAvailable |
建構篩選字串時,下列規則很重要:
- 使用邏輯運算子來比較屬性與值。 無法比較屬性與動態值;運算式的一端必須是常數。
- 篩選字串的所有部分都區分大小寫。
- 常數和屬性必須是相同的資料類型,篩選才能傳回有效的結果。 如需支援的屬性類型的詳細資訊,請參閱 了解表格服務資料模型。
篩選字串屬性
當您篩選字串屬性時,請用單引號括住字串常數。
下列範例會篩選 PartitionKey 和 RowKey 屬性。額外的非索引鍵屬性也可以加入至篩選字串:
PartitionKey eq 'Partition1' and RowKey eq '00001'
您可以用括號括住每個篩選運算式 (雖然並非必要):
(PartitionKey eq 'Partition1') and (RowKey eq '00001')
表格服務不支援萬用字元查詢,在 [資料表設計工具] 中也不支援。 不過,您可以在所需的前置詞上使用比較運算子,以執行前置詞比對。 下列範例會傳回 LastName 屬性開頭為字母 'A' 的實體:
LastName ge 'A' and LastName lt 'B'
篩選數值屬性
若要篩選整數或浮點數,指定數值且不加引號。
這個範例會傳回與 Age 屬性的值大於 30 的所有實體:
Age gt 30
這個範例會傳回與 AmountDue 屬性的值小於或等於 100.25 的所有實體:
AmountDue le 100.25
篩選布林值屬性
若要篩選布林值,請指定 true 或 false 且不加引號。
下列範例會傳回 IsActive 屬性設定為 true的所有實體:
IsActive eq true
您也可以不加邏輯運算子來撰寫這個篩選運算式。 在下列範例中,表格服務也會傳回 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'