Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die SELECT Klausel identifiziert Felder, die in Abfrageergebnissen zurückgegeben werden sollen. Die Klausel übergibt diese Felder dann in das JSON-Resultset.
Jede Abfrage besteht aus einer SELECT Klausel und optional FROM und WHERE Klauseln pro ANSI SQL-Standards. In der Regel wird die Quelle in der FROM Klausel aufgezählt, und die WHERE Klausel wendet einen Filter auf die Quelle an, um eine Teilmenge von JSON-Elementen abzurufen.
Syntax
SELECT <select_specification>
<select_specification> ::=
'*'
| [DISTINCT] <object_property_list>
| [DISTINCT] VALUE <scalar_expression> [[ AS ] value_alias]
<object_property_list> ::=
{ <scalar_expression> [ [ AS ] property_alias ] } [ ,...n ]
Arguments
| Description | |
|---|---|
select_specification |
Eigenschaften oder Wert, die für das Resultset ausgewählt werden sollen. |
* |
Gibt an, dass der Wert ohne Änderungen abgerufen werden soll. Insbesondere wenn der verarbeitete Wert ein Objekt ist, werden alle Eigenschaften abgerufen. |
object_property_list |
Gibt die Liste der abzurufenden Eigenschaften an. Jeder zurückgegebene Wert ist ein Objekt mit den angegebenen Eigenschaften. |
VALUE |
Gibt an, dass der JSON-Wert anstelle des vollständigen JSON-Objekts abgerufen werden soll. Dieses Argument schließt im Gegensatz zu <property_list> den projizierten Wert nicht in ein Objekt um. |
DISTINCT |
Gibt an, dass Duplikate von projizierten Eigenschaften entfernt werden sollen. |
scalar_expression |
Ausdruck, der den zu berechnenden Wert darstellt. |
Rückgabetypen
Gibt die projizierten Felder oder Werte wie angegeben zurück.
Examples
Dieser Abschnitt enthält Beispiele für die Verwendung dieses Abfragesprachenkonstrukts.
Auswählen statischer Zeichenfolgenwerte
In diesem Beispiel werden zwei statische Zeichenfolgenwerte und ein Array mit einem einzelnen Objekt zurückgegeben, das beide Werte enthält. Da die Werte unbenannt sind, wird eine sequenzielle generierte Zahl verwendet, um das entsprechende JSON-Feld zu benennen.
SELECT
"Cosmic", "Works"
[
{
"$1": "Cosmic",
"$2": "Works"
}
]
Projektfelder
In diesem Beispiel wird die JSON-Projektion verwendet, um die exakten Struktur- und Feldnamen für das resultierende JSON-Objekt zu optimieren. Hier wird ein JSON-Objekt mit Feldern namens identifier und model. Das externe JSON-Objekt ist weiterhin unbenannt, sodass eine generierte Zahl ($1) zum Benennen dieses Felds verwendet wird.
SELECT {
identifier: p.name,
model: p.sku
}
FROM
products p
[
{
"$1": {
"identifier": "Remdriel Shoes",
"model": "61506"
}
},
{
"$1": {
"identifier": "Tirevy trunks",
"model": "73402"
}
},
...
]
Statische Project-Zeichenfolge
In diesem Beispiel wird das Schlüsselwort VALUE mit einer statischen Zeichenfolge verwendet, um ein Array von Zeichenfolgen als Ergebnis zu erstellen.
SELECT VALUE
"Cosmic Works"
[
"Cosmic Works"
]
Komplexe Projektion
In diesem Beispiel verwendet die Abfrage eine Kombination aus einer SELECT Klausel, dem VALUE Schlüsselwort, einer Klausel und einer FROM JSON-Projektion, um eine gemeinsame Abfrage mit den Ergebnissen auszuführen, die in ein JSON-Objekt umgewandelt wurden, damit der Client analysiert werden kann.
SELECT VALUE {
name: p.name,
link: p.metadata.link,
firstTag: p.tags[0]["value"]
}
FROM
products p
[
{
"name": "Remdriel Shoes",
"link": "https://www.adventure-works.com/remdriel-shoes/68719521615.p",
"firstTag": "suede-leather-and-mesh"
},
{
"name": "Tirevy trunks",
"link": "https://www.adventure-works.com/tirevy-trunks/68719520573.p",
"firstTag": "polyester"
},
...
]
Bemerkungen
- Die
SELECT *Syntax ist nur gültig, wennFROMdie Klausel genau einen Alias deklariert hat.SELECT *stellt eine Identitätsprojektion bereit, die nützlich sein kann, wenn keine Projektion erforderlich ist.SELECT *ist nur gültig, wennFROMeine Klausel angegeben und nur eine einzige Eingabequelle eingeführt wurde. - Beide
SELECT <select_list>sindSELECT *syntaktischer Zucker und können mit einfachenSELECTAussagen ausgedrückt werden. - Der Ausdruck
SELECT * FROM ... AS from_alias ...ist gleichbedeutend mitSELECT from_alias FROM ... AS from_alias .... - Der Ausdruck
SELECT <expr1> AS p1, <expr2> AS p2,..., <exprN> AS pN [other clauses...]ist gleichbedeutend mitSELECT VALUE { p1: <expr1>, p2: <expr2>, ..., pN: <exprN> }[other clauses...].