Köra frågor mot tabeller och entiteter
Att köra frågor mot tabeller och entiteter i tabelltjänsten kräver noggrann konstruktion av begärande-URI:n. I följande avsnitt beskrivs frågealternativ och några vanliga scenarier.
Grundläggande frågesyntax
Om du vill returnera alla tabeller i ett visst lagringskonto utför du en GET
åtgärd på resursen Tabeller enligt beskrivningen i åtgärden Frågetabeller . Den grundläggande URI:n för att hantera resursen Tabeller är följande:
https://myaccount.table.core.windows.net/Tables
Om du vill returnera en enda namngiven tabell anger du tabellen på följande sätt:
https://myaccount.table.core.windows.net/Tables('MyTable')
Om du vill returnera alla entiteter i en tabell anger du tabellnamnet på URI:n utan resursen Tabeller:
https://myaccount.table.core.windows.net/MyTable()
Frågeresultat sorteras efter PartitionKey
och sedan efter RowKey
. Det finns för närvarande inte stöd för att ordna resultat på något annat sätt.
Du kan ange ytterligare alternativ för att begränsa den uppsättning tabeller eller entiteter som returneras enligt beskrivningen i avsnittet Frågealternativ som stöds .
Anteckning
Antalet entiteter som returneras för en enskild begäran kan vara begränsat, om frågan överskrider det maximala antalet entiteter, överskrider tidsgränsintervallet eller korsar en partitionsgräns. Mer information finns i Timeout och sidnumrering för frågor.
Frågealternativ som stöds
Tabelltjänsten stöder följande frågealternativ som överensstämmer med OData-protokollspecifikationen. Du kan använda dessa alternativ för att begränsa uppsättningen tabeller, entiteter eller entitetsegenskaper som returneras av en fråga.
Systemfrågealternativ | Description |
---|---|
$filter |
Returnerar endast tabeller eller entiteter som uppfyller det angivna filtret. Observera att högst 15 diskreta jämförelser tillåts i en $filter sträng. |
$top |
Returnerar endast de översta n tabellerna eller entiteterna från uppsättningen. |
$select |
Returnerar önskade egenskaper för en entitet från uppsättningen. Det här frågealternativet stöds endast för begäranden med version 2011-08-18 eller senare. Mer information finns i Skriva LINQ-frågor mot tabelltjänsten. |
Anteckning
En begäran som returnerar mer än det maximala eller angivna maximala standardantalet resultat returnerar en fortsättningstoken för att utföra sidnumrering. När du gör efterföljande begäranden som innehåller fortsättningstoken måste du skicka den ursprungliga URI:n på begäran. Om du till exempel har angett ett $filter
, $select
eller $top
frågealternativ som en del av den ursprungliga begäran, vill du inkludera det alternativet för efterföljande begäranden. Annars kan dina efterföljande begäranden returnera oväntade resultat. Mer information finns i Tidsgräns för frågor och sidnumrering .
Observera att frågealternativet $top
i det fall där resultaten är sidnumrerade anger det maximala antalet resultat per sida, inte det maximala antalet resultat i hela svarsuppsättningen.
Ytterligare frågealternativ som definieras av OData stöds inte av tabelltjänsten.
Jämförelseoperatorer som stöds
I en $filter
sats kan du använda jämförelseoperatorer för att ange de kriterier som frågeresultaten ska filtreras mot.
För alla egenskapstyper stöds följande jämförelseoperatorer:
Operator | URI-uttryck |
---|---|
Equal |
eq |
GreaterThan |
gt |
GreaterThanOrEqual |
ge |
LessThan |
lt |
LessThanOrEqual |
le |
NotEqual |
ne |
Dessutom stöds följande operatorer för booleska egenskaper:
Operator | URI-uttryck |
---|---|
And |
and |
Not |
not |
Or |
or |
Mer information om filtersyntax finns i OData-protokollspecifikationen.
Kodning av frågesträng
Följande tecken måste kodas om de ska användas i en frågesträng:
- Snedstreck (/)
- Frågetecken (?)
- Kolon (:)
- Symbolen "At" (@)
- Ampersand (&)
- Likhetstecken (=)
- Plustecken (+)
- Kommatecken (,)
- Dollartecken ($)
Enkelt citattecken (')
Enkla citattecken i frågesträngar måste representeras som två på varandra följande enkla citattecken (''
). Till exempel skulle "klockan" vara:
o''clock
Exempel på frågeuttryck
Följande exempel visar hur du skapar begärande-URI:n för vissa typiska entitetsfrågor med hjälp av REST-syntax. Samma frågor kan skrivas med LINQ-syntax. Mer information finns i Skriva LINQ-frågor mot tabelltjänsten.
Observera att både $top
alternativen och $filter
kan användas för att filtrera på tabellnamn, med hjälp av syntaxen som demonstreras för filtrering av egenskaper av typen String
.
Returnerar de översta n entiteterna
Om du vill returnera de översta n
entiteterna för en fråga anger du frågealternativet $top
. I följande exempel returneras de 10 översta entiteterna från en tabell med namnet Kunder:
https://myaccount.table.core.windows.net/Customers()?$top=10
Filtrera på egenskaperna PartitionKey och RowKey
PartitionKey
Eftersom egenskaperna och RowKey
utgör en entitets primärnyckel kan du använda en särskild syntax för att identifiera entiteten på följande sätt:
https://myaccount.table.core.windows.net/Customers(PartitionKey='MyPartition',RowKey='MyRowKey1')
Du kan också ange egenskaperna som en del av alternativet $filter
, som du ser i följande avsnitt.
Lägg märke till att nyckelns egenskapsnamn och konstanta värden är skiftlägeskänsliga.
PartitionKey
Både egenskaperna och RowKey
är av typen String
.
Skapa filtersträngar
Tänk på följande när du skapar en filtersträng:
Använd de logiska operatorerna som definieras av OData Protocol Specification för att jämföra en egenskap med ett värde. Observera att det inte går att jämföra en egenskap med ett dynamiskt värde. ena sidan av uttrycket måste vara en konstant.
Egenskapsnamnet, operatorn och det konstanta värdet måste separeras av URL-kodade blanksteg. Ett blanksteg är URL-kodat som
%20
.Alla delar av filtersträngen är skiftlägeskänsliga.
Det konstanta värdet måste vara av samma datatyp som egenskapen för filtret för att returnera giltiga resultat. Mer information om egenskapstyper som stöds finns i Förstå Tabelltjänst-datamodellen.
Anteckning
Se till att kontrollera om en egenskap uttryckligen har skrivits innan du antar att den är av en annan typ än sträng. Om en egenskap uttryckligen har skrivits anges typen i svaret när entiteten returneras. Om egenskapen inte uttryckligen har skrivits är den av typen String
och typen anges inte i svaret när entiteten returneras.
Filtrera efter strängegenskaper
När du filtrerar efter strängegenskaper omsluter du strängkonstanten med enkla citattecken.
I följande exempel filtreras PartitionKey
egenskaperna och RowKey
. Ytterligare icke-nyckelegenskaper kan också läggas till i frågesträngen.
https://myaccount.table.core.windows.net/Customers()?$filter=PartitionKey%20eq%20'MyPartitionKey'%20and%20RowKey%20eq%20'MyRowKey1'
Följande exempel filtrerar på en FirstName
och-egenskap LastName
:
https://myaccount.table.core.windows.net/Customers()?$filter=LastName%20eq%20'Smith'%20and%20FirstName%20eq%20'John'
Observera att table-tjänsten inte stöder jokerteckenfrågor. Du kan dock utföra prefixmatchning med hjälp av jämförelseoperatorer på önskat prefix. I följande exempel returneras entiteter med en LastName
egenskap som börjar med bokstaven "A":
https://myaccount.table.core.windows.net/Customers()?$filter=LastName%20ge%20'A'%20and%20LastName%20lt%20'B'
Filtrera efter numeriska egenskaper
Om du vill filtrera på ett heltal eller flyttalsnummer anger du konstantvärdet på URI:n utan citattecken.
Det här exemplet returnerar alla entiteter med en Age
egenskap vars värde är större än 30:
https://myaccount.table.core.windows.net/Customers()?$filter=Age%20gt%2030
Det här exemplet returnerar alla entiteter med en AmountDue
egenskap vars värde är mindre än eller lika med 100,25:
https://myaccount.table.core.windows.net/Customers()?$filter=AmountDue%20le%20100.25%20
Filtrera efter booleska egenskaper
Om du vill filtrera på ett booleskt värde anger true
du eller false
utan citattecken.
I följande exempel returneras alla entiteter där IsActive
egenskapen är inställd på true
:
https://myaccount.table.core.windows.net/Customers()?$filter=IsActive%20eq%20true
Filtrera efter DateTime-egenskaper
Om du vill filtrera på ett DateTime
värde anger du nyckelordet datetime
för URI:n följt av datum/tid-konstanten inom enkla citattecken. Datum/tid-konstanten måste vara i kombinerat UTC-format enligt beskrivningen i Formatera DateTime-värden.
I följande exempel returneras entiteter där CustomerSince
egenskapen är lika med 10 juli 2008:
https://myaccount.table.core.windows.net/Customers()?$filter=CustomerSince%20eq%20datetime'2008-07-10T00:00:00Z'
Filtrering på GUID-egenskaper
Om du vill filtrera på ett GUID-värde anger du nyckelordet guid
för URI:n följt av guid-konstanten inom enkla citattecken.
I följande exempel returneras entiteter där GuidValue
egenskapen är lika med :
https://myaccount.table.core.windows.net/Customers()?$filter=GuidValue%20eq%20guid'a455c695-df98-5678-aaaa-81d3367e5a34'
Se även
Tabelltjänst-koncept
Förstå datamodellen för Table Service
Hantera tabelltjänstresurser
Tidsgräns för frågor och sidnumrering
Skriva LINQ-frågor mot tabelltjänsten