Query's uitvoeren op tabellen en entiteiten

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

Basisquerysyntaxis

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 . 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 deze 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 voor de URI, zonder de tabelresource:

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

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

U kunt extra opties opgeven om de set tabellen of entiteiten te beperken die worden geretourneerd, zoals wordt beschreven in de volgende sectie Ondersteunde queryopties .

Notitie

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

Ondersteunde queryopties

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

Systeemqueryoptie Beschrijving
$filter Retourneert alleen tabellen of entiteiten die voldoen aan het opgegeven filter.

Houd er rekening mee dat niet meer dan 15 discrete vergelijkingen zijn toegestaan binnen een $filter tekenreeks.
$top Retourneert alleen de belangrijkste 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 indient die vervolgtokens bevatten, moet u de oorspronkelijke URI op de aanvraag doorgeven. Als u bijvoorbeeld een $filter, $selectof $top queryoptie hebt opgegeven als onderdeel van de oorspronkelijke aanvraag, wilt u deze optie opnemen voor volgende aanvragen. Anders kunnen uw volgende aanvragen onverwachte resultaten retourneren. Zie Time-out en paginering van query's voor meer informatie.

Houd er rekening mee dat de $top queryoptie in het geval dat resultaten worden gepagineerd het maximum aantal resultaten per pagina aangeeft, 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 vergelijkingsoperatoren gebruiken om de criteria op te geven waarmee de queryresultaten moeten worden gefilterd.

Voor alle eigenschapstypen worden de volgende vergelijkingsoperatoren 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 specificatie van het OData-protocol voor meer informatie over de filtersyntaxis.

Queryreekscodering

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

  • Slash (/)
  • 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' zou bijvoorbeeld het volgende zijn:

o''clock

Voorbeeldquery-expressies

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

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

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 en RowKey eigenschappen de PartitionKey primaire sleutel van een entiteit vormen, kunt u als volgt een speciale syntaxis gebruiken om de entiteit 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 als RowKey de PartitionKey eigenschappen zijn van het typeString.

Filtertekenreeksen maken

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

  • Gebruik de logische operators die zijn gedefinieerd door de OData Protocol-specificatie 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

Zorg ervoor dat u controleert of een eigenschap expliciet is getypt voordat ervan wordt uitgegaan 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.

Het volgende voorbeeldfilters op de PartitionKey en RowKey eigenschappen; er kunnen ook aanvullende niet-sleuteleigenschappen worden toegevoegd aan de querytekenreeks.

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

Het volgende voorbeeld filtert op een FirstName en LastName eigenschap:

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 jokertekenquery's. U kunt echter voorvoegselkoppelingen uitvoeren 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 voor de URI 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 true u of false zonder aanhalingstekens op.

In het volgende voorbeeld worden alle entiteiten geretourneerd waarop de IsActive eigenschap is ingesteld trueop:

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 op de URI, gevolgd door de datum-/tijdconstante in enkele aanhalingstekens. De datum-/tijdconstante moet een gecombineerde UTC-indeling hebben, zoals wordt beschreven in datum/tijd-waarden opmaken.

In het volgende voorbeeld worden entiteiten geretourneerd waarbij 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 in enkele aanhalingstekens.

In het volgende voorbeeld worden entiteiten geretourneerd waarbij 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
Time-out en paginering van query's
LINQ-query's schrijven voor de tabelservice