Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Vonatkozik a következőkre: SQL Server 2016 (13.x) és későbbi verziók
Azure SQL Database
, Azure SQL Managed Instance
, Azure Synapse Analytics (csak serverless SQL pool)
SQL-adatbázis a Microsoft Fabricban
JSON-elérésiút-kifejezések használatával hivatkozhat a JSON-objektumok tulajdonságaira.
Az alábbi függvények meghívásához meg kell adnia egy elérési útkifejezést.
- Amikor meghívja az OPENJSON-t a JSON-adatok relációs nézetének létrehozásához.
- Amikor meghívja JSON_VALUE , hogy JSON-szövegből nyerjen ki egy értéket.
- Amikor meghívja JSON_QUERY egy JSON-objektum vagy tömb kinyeréséhez.
- Amikor meghívja JSON_MODIFY egy JSON-sztringben lévő tulajdonság értékének frissítéséhez.
Elérésiút-kifejezés részei
Egy elérésiút-kifejezés két összetevőből áll.
Az opcionális útvonal mód,
laxvagystrictértékkel.Maga az elérési út.
Útvonal mód
Az elérési út kifejezésének elején opcionálisan megadhatja az útvonal módját a kulcsszó lax vagy strict használatával. Az alapértelmezett érték a lax.
Módban
laxa függvény üres értékeket ad vissza, ha az elérési út kifejezése hibát tartalmaz. Ha például az értéket$.namekéri, és a JSON-szöveg nem tartalmaznamekulcsot, a függvény null értéket ad vissza, de nem okoz hibát.Módban
stricta függvény hibát jelez, ha az elérési út kifejezése hibát tartalmaz.
Az alábbi lekérdezés explicit módon határozza meg lax a módot az elérési út kifejezésében.
DECLARE @json AS NVARCHAR (MAX);
SET @json = N'{ ... }';
SELECT *
FROM OPENJSON (@json, N'lax $.info');
Path
Az opcionális elérésiút-mód deklarációja után adja meg magát az elérési utat.
A dollárjel (
$) a környezeti elemet jelöli.Az elérési út egy tulajdonságútvonal lépéseinek halmaza. Az elérési út lépései a következő elemeket és operátorokat tartalmazhatják.
Kulcsnevek. Például:
$.nameés$."first name". Ha a kulcs neve dollárjellel kezdődik, vagy speciális karaktereket, például szóközöket vagy pont operátorokat(.) tartalmaz, akkor idézőjelek veszik körül.Tömbelemek. Például:
$.product[3]. A tömbök nulla alapúak.A pont operátor (
.) egy objektum egy tagját jelzi. Például, a$.people[1].surnameesetében, asurnameapeoplegyermeke.A tömbbeli helyettesítő karakterek és a tartománykeresések akkor is támogatottak, ha a bemenet JSON-típusérték.
Tömb helyettesítő karakter és tartomány támogatása
Note
A tömb helyettesítő karakterének és tartományának támogatása jelenleg előzetes verzióban érhető el, és csak az SQL Server 2025-ben (17.x) érhető el.
Az SQL Server 2025 (17.x) kiterjeszti az ANSI SQL/JSON elérési út kifejezését egy tömb helyettesítő karakterének támogatásához. A Tömb joker karakter lehetővé teszi, hogy megadja az összes elemet, elemtartományt, elemlistát, vagy a "last" speciális jelzőt, a JSON-tömb utolsó értékének megjelölésére. Az SQL/JSON-tömbök nulla alapú indexet használnak. Az SQL/JSON-elérési út helyettesítő karakterekkel a JSON_QUERY, JSON_PATH_EXISTS és JSON_CONTAINS esetében használható.
Bár JSON_VALUE a függvény támogatja az SQL/JSON-elérési út kifejezést, a függvény visszatérési JSON_VALUE értéke egy SQL skalár, ezért a függvény mindig egy JSON-objektumra vagy tömbre mutató SQL/JSON-elérési úthoz ad vissza.NULL A tömb helyettesítő karakterei csak akkor támogatottak, ha a bemenet json típusú.
Az alábbi szintaxis bemutatja, hogyan használható a helyettesítő karakter, a tartomány és a speciális token last:
path[elements ]
elements ::= {
*
| number
| number to number
| last
| {number...[, number] }
}
A speciális token last a számérték helyett használható. Ha egy tartomány meg van adva, akkor a tartományt növekvő sorrendben kell megadni.
Példák néhány érvényes SQL/JSON-elérési útkifejezésre:
| Path | Description |
|---|---|
$[*] |
Minden elem |
$[0] |
Első elem |
$[0 to 2] |
Első három elem |
$[last] |
Utolsó elem |
$[last, 0] |
Invalid |
$[last, 2, 0, last] |
Invalid |
$.creditcards[0].type |
A tömb első elemének creditcards típustulajdonság-értékét adja vissza |
$.credit_cards[*].type |
A tömb összes elemének creditcards típustulajdonság-értékét adja vissza |
$.credit_cards[0, 2].type |
A tömb első és harmadik elemének creditcards típustulajdonság-értékét adja vissza |
$.credit_cards[1 to 3].type |
A tömb második-negyedik elemének creditcards típustulajdonság-értékét adja vissza |
$.credit_cards[last].type |
A tömb utolsó elemének creditcards típustulajdonság-értékét adja vissza |
$.credit_cards[last, 0].type |
A tömb utolsó és első elemének creditcards típustulajdonság-értékét adja vissza |
Examples
Az ebben a szakaszban szereplő példák a következő JSON-szövegre hivatkoznak.
{
"people": [{
"name": "John",
"surname": "Doe"
}, {
"name": "Jane",
"surname": null,
"active": true
}]
}
Az alábbi táblázat néhány példát mutat be az elérésiút-kifejezésekre.
| Elérési út kifejezése | Value |
|---|---|
$.people[0].name |
John |
$.people[1] |
{ "name": "Jane", "surname": null, "active": true } |
$.people[1].surname |
NULL |
$ |
{ "people": [ { "name": "John", "surname": "Doe" },{ "name": "Jane", "surname": null, "active": true } ] } |
$.people[last].name |
["Jane"] |
$.people[0 to 1].name |
["John","Jane"] |
$.people[0, 1].name |
["John","Jane"] |
Hogyan kezelik a beépített függvények az ismétlődő útvonalakat?
Ha a JSON-szöveg ismétlődő tulajdonságokat tartalmaz – például két azonos nevű kulcs ugyanazon a szinten –, akkor a JSON_VALUEJSON_QUERY függvények csak az elérési útnak megfelelő első értéket adják vissza. Az ismétlődő kulcsokat tartalmazó és az összes értéket visszaadó JSON-objektum elemzéséhez használja OPENJSONaz alábbi példában látható módon.
DECLARE @json AS NVARCHAR (MAX);
SET @json = N'{"person":{"info":{"name":"John", "name":"Jack"}}}';
SELECT value
FROM OPENJSON (@json, '$.person.info');
További információ a JSON-ról
A beépített JSON-támogatás vizuális bemutatásához tekintse meg az alábbi videót: