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 PartitionKeyoch 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, $selecteller $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 Stringoch 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