DocumentDB SQL - Zwischen Schlüsselwort
Das Schlüsselwort BETWEEN wird verwendet, um Abfragen für Wertebereiche wie in SQL auszudrücken. ZWISCHEN kann gegen Zeichenfolgen oder Zahlen verwendet werden. Der Hauptunterschied zwischen der Verwendung von BETWEEN in DocumentDB und ANSI SQL besteht darin, dass Sie Bereichsabfragen für Eigenschaften gemischter Typen ausdrücken können.
In einigen Dokumenten ist es beispielsweise möglich, dass Sie als Note "Note" haben, und in anderen Dokumenten sind es möglicherweise Zeichenfolgen. In diesen Fällen ist ein Vergleich zwischen zwei verschiedenen Ergebnistypen "undefiniert" und das Dokument wird übersprungen.
Betrachten wir die drei Dokumente aus dem vorherigen Beispiel. Es folgt dieAndersenFamily Dokument.
{
"id": "AndersenFamily",
"lastName": "Andersen",
"parents": [
{ "firstName": "Thomas", "relationship": "father" },
{ "firstName": "Mary Kay", "relationship": "mother" }
],
"children": [
{
"firstName": "Henriette Thaulow",
"gender": "female",
"grade": 5,
"pets": [ { "givenName": "Fluffy", "type": "Rabbit" } ]
}
],
"location": { "state": "WA", "county": "King", "city": "Seattle" },
"isRegistered": true
}
Es folgt die SmithFamily Dokument.
{
"id": "SmithFamily",
"parents": [
{ "familyName": "Smith", "givenName": "James" },
{ "familyName": "Curtis", "givenName": "Helen" }
],
"children": [
{
"givenName": "Michelle",
"gender": "female",
"grade": 1
},
{
"givenName": "John",
"gender": "male",
"grade": 7,
"pets": [
{ "givenName": "Tweetie", "type": "Bird" }
]
}
],
"location": {
"state": "NY",
"county": "Queens",
"city": "Forest Hills"
},
"isRegistered": true
}
Es folgt die WakefieldFamily Dokument.
{
"id": "WakefieldFamily",
"parents": [
{ "familyName": "Wakefield", "givenName": "Robin" },
{ "familyName": "Miller", "givenName": "Ben" }
],
"children": [
{
"familyName": "Merriam",
"givenName": "Jesse",
"gender": "female",
"grade": 6,
"pets": [
{ "givenName": "Charlie Brown", "type": "Dog" },
{ "givenName": "Tiger", "type": "Cat" },
{ "givenName": "Princess", "type": "Cat" }
]
},
{
"familyName": "Miller",
"givenName": "Lisa",
"gender": "female",
"grade": 3,
"pets": [
{ "givenName": "Jake", "type": "Snake" }
]
}
],
"location": { "state": "NY", "county": "Manhattan", "city": "NY" },
"isRegistered": false
}
Schauen wir uns ein Beispiel an, in dem die Abfrage alle Familiendokumente zurückgibt, in denen die Note des ersten Kindes zwischen 1 und 5 liegt (beide einschließlich).
Es folgt die Abfrage, in der das Schlüsselwort BETWEEN verwendet wird, und dann der logische Operator AND.
SELECT *
FROM Families.children[0] c
WHERE c.grade BETWEEN 1 AND 5
Wenn die obige Abfrage ausgeführt wird, wird die folgende Ausgabe erzeugt.
[
{
"givenName": "Michelle",
"gender": "female",
"grade": 1
},
{
"firstName": "Henriette Thaulow",
"gender": "female",
"grade": 5,
"pets": [
{
"givenName": "Fluffy",
"type": "Rabbit"
}
]
}
]
Verwenden Sie NICHT ZWISCHEN, um die Noten außerhalb des Bereichs des vorherigen Beispiels anzuzeigen, wie in der folgenden Abfrage gezeigt.
SELECT *
FROM Families.children[0] c
WHERE c.grade NOT BETWEEN 1 AND 5
Wenn diese Abfrage ausgeführt wird. Es wird die folgende Ausgabe erzeugt.
[
{
"familyName": "Merriam",
"givenName": "Jesse",
"gender": "female",
"grade": 6,
"pets": [
{
"givenName": "Charlie Brown",
"type": "Dog"
},
{
"givenName": "Tiger",
"type": "Cat"
},
{
"givenName": "Princess",
"type": "Cat"
}
]
}
]