Query's uitvoeren op tabellen en entiteiten

Voor het uitvoeren van query's op tabellen en entiteiten in de Tabelservice is een zorgvuldige constructie van de aanvraag-URI vereist. In de volgende secties worden queryopties beschreven en worden enkele veelvoorkomende scenario's beschreven.

Eenvoudige querysyntaxis

Als u alle tabellen in een bepaald opslagaccount wilt retourneren, voert u een GET bewerking uit op de tabelresource, zoals beschreven in de bewerking Querytabellen uitvoeren. De basis-URI voor het adresseren van de tabelresource is als volgt:

https://myaccount.table.core.windows.net/Tables  

Als u één benoemde tabel wilt retourneren, geeft u die tabel als volgt op:

https://myaccount.table.core.windows.net/Tables('MyTable')  

Als u alle entiteiten in een tabel wilt retourneren, geeft u de tabelnaam op in de URI, zonder de tabelresource:

https://myaccount.table.core.windows.net/MyTable()  

Queryresultaten worden gesorteerd op PartitionKeyen vervolgens op RowKey. Het op een andere manier ordenen van resultaten wordt momenteel niet ondersteund.

U kunt extra opties opgeven om de set geretourneerde tabellen of entiteiten te beperken, zoals beschreven in de sectie Ondersteunde queryopties .

Notitie

Het aantal entiteiten dat voor één aanvraag wordt geretourneerd, kan beperkt zijn als de query het maximum aantal entiteiten overschrijdt, het time-outinterval overschrijdt of een partitiegrens overschrijdt. Zie Time-out van query's en paginering voor meer informatie.

Ondersteunde queryopties

De Table-service ondersteunt de volgende queryopties, die voldoen aan de OData-protocolspecificatie. U kunt deze opties gebruiken om de set tabellen, entiteiten of entiteitseigenschappen te beperken die door een query worden geretourneerd.

Optie systeemquery Description
$filter Retourneert alleen tabellen of entiteiten die voldoen aan het opgegeven filter.

Houd er rekening mee dat er niet meer dan 15 discrete vergelijkingen binnen een $filter tekenreeks zijn toegestaan.
$top Retourneert alleen de bovenste n tabellen of entiteiten uit de set.
$select Retourneert de gewenste eigenschappen van een entiteit uit de set. Deze queryoptie wordt alleen ondersteund voor aanvragen met versie 2011-08-18 of hoger. Zie LINQ-query's schrijven voor de tabelservice voor meer informatie.

Notitie

Een aanvraag die meer dan het standaard maximum of opgegeven maximum aantal resultaten retourneert, retourneert een vervolgtoken voor het uitvoeren van paginering. Wanneer u volgende aanvragen maakt die vervolgtokens bevatten, moet u ervoor zorgen dat u de oorspronkelijke URI voor de aanvraag doorgeeft. Als u bijvoorbeeld een $filter$select, of $top queryoptie hebt opgegeven als onderdeel van de oorspronkelijke aanvraag, wilt u deze optie opnemen in volgende aanvragen. Anders kunnen uw volgende aanvragen onverwachte resultaten retourneren. Zie Time-out van query's en paginering voor meer informatie.

Houd er rekening mee dat met de $top queryoptie in het geval waarin resultaten worden gepagineerd het maximum aantal resultaten per pagina wordt opgegeven, niet het maximum aantal resultaten in de hele antwoordset.

Aanvullende queryopties die zijn gedefinieerd door OData, worden niet ondersteund door de Table-service.

Ondersteunde vergelijkingsoperators

Binnen een $filter component kunt u vergelijkingsoperators gebruiken om de criteria op te geven waarop de queryresultaten moeten worden gefilterd.

Voor alle eigenschapstypen worden de volgende vergelijkingsoperators ondersteund:

Operator URI-expressie
Equal eq
GreaterThan gt
GreaterThanOrEqual ge
LessThan lt
LessThanOrEqual le
NotEqual ne

Daarnaast worden de volgende operators ondersteund voor Booleaanse eigenschappen:

Operator URI-expressie
And and
Not not
Or or

Zie de OData-protocolspecificatie voor meer informatie over de filtersyntaxis.

Queryreekscodering

De volgende tekens moeten worden gecodeerd als ze in een querytekenreeks moeten worden gebruikt:

  • Schuine streep (/)
  • Vraagteken (?)
  • Dubbele punt (:)
  • Symbool 'At' (@)
  • Ampersand (&)
  • Gelijkteken (=)
  • Plusteken (+)
  • Komma (,)
  • Dollarteken ($)

Enkel aanhalingsteken (')

Enkele aanhalingstekens in querytekenreeksen moeten worden weergegeven als twee opeenvolgende enkele aanhalingstekens (''). 'o'clock' is bijvoorbeeld:

o''clock

Voorbeeldquery-expressies

In de volgende voorbeelden ziet u hoe u de aanvraag-URI voor sommige typische entiteitsquery's maakt met behulp van rest-syntaxis. Dezelfde query's kunnen worden geschreven met linq-syntaxis. Zie LINQ-query's schrijven voor de tabelservice voor meer informatie.

Houd er rekening mee dat zowel de $top opties als $filter de opties kunnen worden gebruikt om te filteren op tabelnamen, met behulp van de syntaxis die wordt gedemonstreerd voor het filteren op eigenschappen van het type String.

De belangrijkste n entiteiten retourneren

Als u de belangrijkste n entiteiten voor een query wilt retourneren, geeft u de $top queryoptie op. In het volgende voorbeeld worden de tien belangrijkste entiteiten uit een tabel met de naam Klanten geretourneerd:

https://myaccount.table.core.windows.net/Customers()?$top=10  

Filteren op de eigenschappen PartitionKey en RowKey

Omdat de PartitionKey eigenschappen en RowKey de primaire sleutel van een entiteit vormen, kunt u een speciale syntaxis gebruiken om de entiteit als volgt te identificeren:

https://myaccount.table.core.windows.net/Customers(PartitionKey='MyPartition',RowKey='MyRowKey1')  

U kunt deze eigenschappen ook opgeven als onderdeel van de optie $filter, zoals wordt weergegeven in de volgende sectie.

Houd er rekening mee dat de namen van sleuteleigenschappen en constante waarden hoofdlettergevoelig zijn. Zowel de PartitionKey eigenschappen als RowKey zijn van het type String.

Filterreeksen maken

Houd bij het maken van een filtertekenreeks rekening met de volgende regels:

  • Gebruik de logische operators die zijn gedefinieerd door de OData Protocol Specification om een eigenschap te vergelijken met een waarde. Houd er rekening mee dat het niet mogelijk is om een eigenschap te vergelijken met een dynamische waarde; een zijde van de expressie moet een constante zijn.

  • De eigenschapsnaam, operator en constante waarde moeten worden gescheiden door in URL gecodeerde spaties. Een spatie wordt in URL gecodeerd als %20.

  • Alle onderdelen van de filtertekenreeks zijn hoofdlettergevoelig.

  • Het filter retourneert alleen geldige resultaten als de constante waarde van hetzelfde gegevenstype is als de eigenschap. Zie Understanding the Table Service Data Model (Het gegevensmodel van de tabelservice) voor meer informatie over ondersteunde eigenschapstypen.

Notitie

Controleer of een eigenschap expliciet is getypt voordat u ervan uitgaat dat deze van een ander type is dan tekenreeks. Als een eigenschap expliciet is getypt, wordt het type aangegeven in het antwoord wanneer de entiteit wordt geretourneerd. Als de eigenschap niet expliciet is getypt, is deze van het type Stringen wordt het type niet aangegeven in het antwoord wanneer de entiteit wordt geretourneerd.

Filteren op tekenreekseigenschappen

Wanneer u filtert op tekenreekseigenschappen, plaatst u de tekenreeksconstante tussen enkele aanhalingstekens.

In het volgende voorbeeld worden de PartitionKey eigenschappen en RowKey gefilterd. Aanvullende niet-sleuteleigenschappen kunnen ook worden toegevoegd aan de querytekenreeks.

https://myaccount.table.core.windows.net/Customers()?$filter=PartitionKey%20eq%20'MyPartitionKey'%20and%20RowKey%20eq%20'MyRowKey1'  

In het volgende voorbeeld wordt de eigenschap en LastName gefilterdFirstName:

https://myaccount.table.core.windows.net/Customers()?$filter=LastName%20eq%20'Smith'%20and%20FirstName%20eq%20'John'  

Houd er rekening mee dat de Table-service geen ondersteuning biedt voor query's met jokertekens. U kunt voorvoegsels echter wel vergelijken met behulp van vergelijkingsoperators voor het gewenste voorvoegsel. In het volgende voorbeeld worden entiteiten geretourneerd met een LastName eigenschap die begint met de letter 'A':

https://myaccount.table.core.windows.net/Customers()?$filter=LastName%20ge%20'A'%20and%20LastName%20lt%20'B'  

Filteren op numerieke eigenschappen

Als u wilt filteren op een geheel getal of een getal met drijvende komma, geeft u de constante waarde op de URI op zonder aanhalingstekens.

In dit voorbeeld worden alle entiteiten geretourneerd met een Age eigenschap waarvan de waarde groter is dan 30:

https://myaccount.table.core.windows.net/Customers()?$filter=Age%20gt%2030  

In dit voorbeeld worden alle entiteiten geretourneerd met een AmountDue eigenschap waarvan de waarde kleiner is dan of gelijk is aan 100,25:

https://myaccount.table.core.windows.net/Customers()?$filter=AmountDue%20le%20100.25%20  

Filteren op Booleaanse eigenschappen

Als u wilt filteren op een Booleaanse waarde, geeft u true of false zonder aanhalingstekens op.

In het volgende voorbeeld worden alle entiteiten geretourneerd waarvoor de IsActive eigenschap is ingesteld op true:

https://myaccount.table.core.windows.net/Customers()?$filter=IsActive%20eq%20true  

Filteren op datum/tijd-eigenschappen

Als u wilt filteren op een DateTime waarde, geeft u het datetime trefwoord op de URI op, gevolgd door de datum-/tijdconstante tussen enkele aanhalingstekens. De datum-/tijdconstante moet een gecombineerde UTC-indeling hebben, zoals beschreven in Datum/tijd-waarden opmaken.

In het volgende voorbeeld worden entiteiten geretourneerd waarvan de CustomerSince eigenschap gelijk is aan 10 juli 2008:

https://myaccount.table.core.windows.net/Customers()?$filter=CustomerSince%20eq%20datetime'2008-07-10T00:00:00Z'  

Filteren op GUID-eigenschappen

Als u wilt filteren op een GUID-waarde, geeft u het guid trefwoord op de URI op, gevolgd door de guid-constante tussen enkele aanhalingstekens.

In het volgende voorbeeld worden entiteiten geretourneerd waarvan de GuidValue eigenschap gelijk is aan :

https://myaccount.table.core.windows.net/Customers()?$filter=GuidValue%20eq%20guid'a455c695-df98-5678-aaaa-81d3367e5a34'  

Zie ook

Concepten van Table Service
Informatie over het tabelservicegegevensmodel
Resources voor tabelservice adresseren
Time-out van query's en paginering
LINQ-query's schrijven op basis van de tabelservice