Abfragen von Tabellen und Entitäten
Das Abfragen von Tabellen und Entitäten im Tabellendienst erfordert eine sorgfältige Erstellung des Anforderungs-URI. In den folgenden Abschnitten werden Abfrageoptionen beschrieben und einige allgemeine Szenarien veranschaulicht.
Grundlegende Abfragesyntax
Um alle Tabellen in einem bestimmten Speicherkonto zurückzugeben, führen Sie einen GET
Vorgang für die Tabellenressource aus, wie im Vorgang Abfragetabellen beschrieben. Der grundlegende URI zur Adressierung der Tabellenressource lautet wie folgt:
https://myaccount.table.core.windows.net/Tables
Um eine einzelne benannte Tabelle zurückzugeben, geben Sie diese Tabelle wie folgt an:
https://myaccount.table.core.windows.net/Tables('MyTable')
Um alle Entitäten in einer Tabelle zurückzugeben, geben Sie den Tabellennamen im URI ohne die Tabellenressource an:
https://myaccount.table.core.windows.net/MyTable()
Die Abfrageergebnisse werden nach PartitionKey
und dann nach RowKey
sortiert. Die Anordnung der Ergebnisse auf eine andere Weise wird derzeit nicht unterstützt.
Sie können zusätzliche Optionen angeben, um die Menge der zurückgegebenen Tabellen oder Entitäten zu beschränken, wie im folgenden Abschnitt Unterstützte Abfrageoptionen beschrieben.
Hinweis
Die Anzahl der für eine einzelne Anforderung zurückgegebenen Entitäten kann eingeschränkt sein, wenn die Abfrage die maximale Anzahl von Entitäten, das Timeoutintervall oder eine Partitionsbegrenzung überschreitet. Weitere Informationen finden Sie unter Abfragetimeout und Paginierung.
Unterstützte Abfrageoptionen
Der Tabellendienst unterstützt die folgenden Abfrageoptionen, die der OData-Protokollspezifikation entsprechen. Sie können diese Optionen verwenden, um den von einer Abfrage zurückgegebenen Satz von Tabellen, Entitäten oder Entitätseigenschaften zu beschränken.
Systemabfrageoption | BESCHREIBUNG |
---|---|
$filter |
Gibt nur Tabellen oder Entitäten zurück, die dem angegebenen Filter entsprechen. Beachten Sie, dass höchstens 15 diskrete Vergleiche innerhalb einer $filter -Zeichenfolge zulässig sind. |
$top |
Gibt nur die obersten n Tabellen oder Entitäten aus dem Satz zurück. |
$select |
Gibt die gewünschten Eigenschaften einer Entität aus dem Satz zurück. Diese Abfrageoption wird nur für Anforderungen mit Version 2011-08-18 oder neuer unterstützt. Weitere Informationen finden Sie unter Schreiben von LINQ-Abfragen für den Tabellendienst. |
Hinweis
Eine Anforderung, die mehr als die standardmäßige maximale oder angegebene maximale Anzahl von Ergebnissen zurückgibt, gibt ein Fortsetzungstoken für die Paginierung zurück. Wenn Sie nachfolgende Anforderungen ausführen, die Fortsetzungstoken enthalten, müssen Sie den ursprünglichen URI für die Anforderung übergeben. Wenn Sie beispielsweise eine $filter
Abfrageoption , $select
oder $top
als Teil der ursprünglichen Anforderung angegeben haben, sollten Sie diese Option in nachfolgende Anforderungen einschließen. Andernfalls können Ihre nachfolgenden Anforderungen unerwartete Ergebnisse zurückgeben. Weitere Informationen finden Sie unter Abfragetimeout und Paginierung .
Beachten Sie, dass die $top
Abfrageoption für den Fall, dass ergebnisse paginiert werden, die maximale Anzahl von Ergebnissen pro Seite und nicht die maximale Anzahl von Ergebnissen im gesamten Antwortsatz angibt.
Zusätzliche von OData definierte Abfrageoptionen werden vom Tabellendienst nicht unterstützt.
Unterstützte Vergleichsoperatoren
Innerhalb einer $filter
-Klausel können Sie Vergleichsoperatoren verwenden, um die Kriterien zum Filtern der Abfrageergebnisse anzugeben.
Die folgenden Vergleichsoperatoren werden für alle Eigenschaftentypen unterstützt:
Betreiber | URI-Ausdruck |
---|---|
Equal |
eq |
GreaterThan |
gt |
GreaterThanOrEqual |
ge |
LessThan |
lt |
LessThanOrEqual |
le |
NotEqual |
ne |
Außerdem werden die folgenden Operatoren für boolesche Eigenschaften unterstützt:
Betreiber | URI-Ausdruck |
---|---|
And |
and |
Not |
not |
Or |
or |
Weitere Informationen zur Filtersyntax finden Sie in der OData-Protokollspezifikation.
Codierung von Abfragezeichenfolgen
Die folgenden Zeichen müssen codiert werden, wenn sie in einer Abfragezeichenfolge verwendet werden sollen:
- Schrägstrich (/)
- Fragezeichen (?)
- Doppelpunkt (:)
- At-Zeichen (@)
- Kaufmännisches Und-Zeichen (&)
- Gleichheitszeichen (=)
- Pluszeichen (+)
- Komma (,)
- Dollarzeichen ($)
Einfaches Anführungszeichen (')
Einzelne Anführungszeichen in Abfragezeichenfolgen müssen als zwei aufeinanderfolgende einfache Anführungszeichen (''
) dargestellt werden. Beispielsweise würde "o'clock" wie folgt aussehen:
o''clock
Beispielabfrageausdrücke
In den folgenden Beispielen wird gezeigt, wie Sie den Anforderungs-URI für einige typische Entitätsabfragen mithilfe der REST-Syntax erstellen. Diese Abfragen können auch mithilfe der LINQ-Syntax geschrieben werden. Weitere Informationen finden Sie unter Schreiben von LINQ-Abfragen für den Tabellendienst.
Beachten Sie, dass die $top
-Option und die $filter
-Option auch zum Filtern von Tabellennamen verwendet werden können. Hierfür wird die Syntax verwendet, die zum Filtern von Eigenschaften des Typs String
veranschaulicht wurde.
Zurückgeben der obersten n Entitäten
Damit die obersten n
Entitäten für jede Abfrage zurückgegeben werden, geben Sie die $top
-Abfrageoption an. Im folgenden Beispiel werden die obersten 10 Entitäten aus einer Tabelle mit dem Namen Customers zurückgegeben:
https://myaccount.table.core.windows.net/Customers()?$top=10
Filtern der PartitionKey- und RowKey-Eigenschaften
Da die PartitionKey
-Eigenschaft und die RowKey
-Eigenschaft den Primärschlüssel einer Entität bilden, können Sie wie folgt eine spezifische Syntax verwenden, um die Entität zu identifizieren:
https://myaccount.table.core.windows.net/Customers(PartitionKey='MyPartition',RowKey='MyRowKey1')
Alternativ können Sie diese Eigenschaften als Teil der $filter
-Option angeben, wie im folgenden Abschnitt gezeigt.
Beachten Sie, dass bei den Schlüsseleigenschaftsnamen und Konstantenwerten die Groß-/Kleinschreibung berücksichtigt wird. Sowohl die PartitionKey
-Eigenschaft als auch die RowKey
-Eigenschaft sind vom Typ String
.
Erstellen von Filterzeichenfolgen
Wenn Sie eine Filterzeichenfolge erstellen, beachten Sie diese Regeln:
Verwenden Sie die logischen Operatoren, die von der OData-Protokollspezifikation definiert sind, um eine Eigenschaft mit einem Wert zu vergleichen. Es ist nicht möglich, eine Eigenschaft mit einem dynamischen Wert zu vergleichen; eine Seite des Ausdrucks muss eine Konstante sein.
Eigenschaftenname, Operator und Konstantenwert müssen durch URL-codierte Leerzeichen getrennt werden. Ein Leerzeichen wird als
%20
URL-codiert.Bei allen Teilen der Filterzeichenfolge ist die Groß-/Kleinschreibung zu beachten.
Der konstante Wert muss den gleichen Datentyp besitzen wie die Eigenschaft, damit vom Filter gültige Ergebnisse zurückgegeben werden. Weitere Informationen zu unterstützten Eigenschaftentypen finden Sie unter Grundlegendes zum Tabellenspeicherdienst-Datenmodell.
Hinweis
Überprüfen Sie, ob eine Eigenschaft explizit typisiert war, bevor Sie von einem anderen Datentyp als dem Zeichenfolgentyp ausgehen. Wenn eine Eigenschaft explizit typisiert wurde, wird der Typ innerhalb der Antwort angegeben, wenn die Entität zurückgegeben wird. Wurde die Eigenschaft nicht explizit typisiert, ist sie vom Typ String
, und der Typ wird beim Zurückgeben der Entität nicht innerhalb der Antwort angegeben.
Filtern nach Zeichenfolgeneigenschaften
Wenn Sie nach Zeichenfolgeneigenschaften filtern, schließen Sie die Zeichenfolgenkonstante in einfache Anführungszeichen ein.
Im folgenden Beispiel wird nach der PartitionKey
-Eigenschaft und der RowKey
-Eigenschaft gefiltert. Zusätzliche nicht schlüsselbezogene Eigenschaften können der Abfragezeichenfolge auch hinzugefügt werden.
https://myaccount.table.core.windows.net/Customers()?$filter=PartitionKey%20eq%20'MyPartitionKey'%20and%20RowKey%20eq%20'MyRowKey1'
Im folgenden Beispiel wird nach einer FirstName
-Eigenschaft und einer LastName
-Eigenschaft gefiltert:
https://myaccount.table.core.windows.net/Customers()?$filter=LastName%20eq%20'Smith'%20and%20FirstName%20eq%20'John'
Beachten Sie, dass der Tabellendienst keine Platzhalterabfragen unterstützt. Sie können jedoch den Präfixabgleich ausführen, indem Sie für das gewünschte Präfix Vergleichsoperatoren verwenden. Im folgenden Beispiel werden Entitäten mit einer LastName
-Eigenschaft zurückgegeben, die mit dem Buchstaben 'A' beginnt:
https://myaccount.table.core.windows.net/Customers()?$filter=LastName%20ge%20'A'%20and%20LastName%20lt%20'B'
Filtern nach numerischen Eigenschaften
Um nach einer ganzen Zahl oder einer Gleitkommazahl zu filtern, geben Sie im URI den konstanten Wert ohne Anführungszeichen an.
In diesem Beispiel werden alle Entitäten mit einer Age
-Eigenschaft zurückgegeben, deren Wert größer als 30 ist:
https://myaccount.table.core.windows.net/Customers()?$filter=Age%20gt%2030
In diesem Beispiel werden alle Entitäten mit einer AmountDue
-Eigenschaft zurückgegeben, deren Wert kleiner oder gleich 100,25 ist:
https://myaccount.table.core.windows.net/Customers()?$filter=AmountDue%20le%20100.25%20
Filtern nach booleschen Eigenschaften
Um nach einem booleschen Wert zu filtern, geben Sie true
oder false
ohne Anführungszeichen an.
Im folgenden Beispiel werden alle Entitäten zurückgegeben, bei denen die IsActive
-Eigenschaft auf true
festgelegt ist:
https://myaccount.table.core.windows.net/Customers()?$filter=IsActive%20eq%20true
Filtern nach DateTime-Eigenschaften
Um nach einem DateTime
-Wert zu filtern, geben Sie das datetime
-Schlüsselwort im URI an, auf das die Datums-/Uhrzeitkonstante in einfachen Anführungszeichen folgt. Die Datums-/Uhrzeitkonstante muss im kombinierten UTC-Format vorliegen, wie unter Formatierung von DateTime-Werten beschrieben.
Im folgenden Beispiel werden Entitäten zurückgegeben, bei denen die CustomerSince
-Eigenschaft gleich dem 10. Juli 2008 ist:
https://myaccount.table.core.windows.net/Customers()?$filter=CustomerSince%20eq%20datetime'2008-07-10T00:00:00Z'
Filtern nach GUID-Eigenschaften
Um nach einem GUID-Wert zu filtern, geben Sie das guid
-Schlüsselwort im URI an, auf das die GUID-Konstante in einfachen Anführungszeichen folgt.
Im folgenden Beispiel werden Entitäten zurückgegeben, bei denen die GuidValue
-Eigenschaft gleich dem Folgenden ist:
https://myaccount.table.core.windows.net/Customers()?$filter=GuidValue%20eq%20guid'a455c695-df98-5678-aaaa-81d3367e5a34'
Weitere Informationen
Konzepte des Tabellenspeicherdiensts
Grundlegendes zum Tabellendienstdatenmodell
Adressieren von Tabellendienstressourcen
Abfragetimeout und Paginierung
Schreiben von LINQ-Abfragen für den Tabellendienst