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 szerver nélküli SQL pool)
SQL analytics endpoint a Microsoft Fabricban
Tárház a Microsoft Fabricban
Adatbázis a Microsoft Fabricban
A OPENJSON sorhalmaz függvény a JSON-szöveget sor- és oszlopkészletté alakítja. Miután egy JSON-gyűjteményt OPENJSONtartalmazó sorhalmazsá alakított át, bármilyen SQL-lekérdezést futtathat a visszaadott adatokon, vagy beszúrhatja egy SQL Server-táblába. További információ a JSON-adatok SQL Server-adatbázismotorban való kezeléséről: JSON-adatok az SQL Server.
A OPENJSON függvény egyetlen JSON-objektumot vagy JSON-objektumgyűjteményt vesz igénybe, és átalakítja őket egy vagy több sorba. Alapértelmezés szerint a OPENJSON függvény a következő adatokat adja vissza:
- Egy JSON-objektumból a függvény visszaadja az első szinten talált kulcs-érték párokat.
- Egy JSON-tömbből a függvény a tömb összes elemét visszaadja az indexekkel együtt.
Hozzáadhat egy választható WITH záradékot, hogy olyan sémát biztosítson, amely explicit módon meghatározza a kimenet szerkezetét.
OPENJSON az alapértelmezett kimenettel
Ha a OPENJSON függvényt anélkül használja, hogy explicit sémát ad meg az eredményekhez – azaz WITH utáni OPENJSON záradék nélkül –, a függvény a következő három oszlopból álló táblát ad vissza:
- A tulajdonság
namea bemeneti objektumban (vagy a bemeneti tömb elemének indexe). - A(z)
valuetulajdonság vagy tömbelem. - A
type(például szöveg, szám, logikai érték, tömb vagy objektum).
OPENJSON a JSON-objektum minden tulajdonságát, vagy a tömb minden elemét külön sorként adja vissza.
Az alábbi példa OPENJSON használ az alapértelmezett sémával – vagyis az opcionális WITH záradék nélkül –, és egy sort ad vissza a JSON-objektum minden tulajdonságához.
DECLARE @json NVARCHAR(MAX);
SET @json='{ "name": "John", "surname": "Doe", "age": 45, "skills": [ "SQL", "C#", "MVC" ]}';
SELECT *
FROM OPENJSON(@json);
Itt van az eredményhalmaz.
| kulcs | value | típus |
|---|---|---|
name |
John |
1 |
surname |
Doe |
1 |
age |
45 |
2 |
skills |
[ "SQL" ,"C#" ,"MVC" ] |
4 |
További információkért és példákért lásd: Az OPENJSON használata az alapértelmezett sémával.
Szintaxis és használat: OPENJSON.
OPENJSON-kimenet explicit struktúrával
Ha az eredmények sémáját a WITH függvény OPENJSON záradékával adja meg, a függvény egy táblát ad vissza, amely csak a WITH záradékban megadott oszlopokat tartalmazza. Az opcionális WITH záradékban meg kell adnia a kimeneti oszlopok, azok típusai és a JSON-forrástulajdonságok elérési útjait az egyes kimeneti értékekhez.
OPENJSON végigfut a JSON-objektumok tömbjén, beolvassa az egyes oszlopok megadott elérési útjának értékét, és átalakítja az értéket a megadott típusra.
Az alábbi példa a OPENJSON-t használja a WITH záradékban explicit módon megadott kimenethez tartozó sémával.
DECLARE @json NVARCHAR(MAX);
SET @json = N'[
{
"Order": {
"Number": "SO43659",
"Date": "2024-05-31T00:00:00"
},
"AccountNumber": "AW29825",
"Item": {
"Price": 2024.9940,
"Quantity": 1
}
},
{
"Order": {
"Number": "SO43661",
"Date": "2024-06-01T00:00:00"
},
"AccountNumber": "AW73565",
"Item": {
"Price": 2024.9940,
"Quantity": 3
}
}
]';
SELECT *
FROM OPENJSON(@json) WITH (
Number VARCHAR(200) '$.Order.Number',
DATE DATETIME '$.Order.Date',
Customer VARCHAR(200) '$.AccountNumber',
Quantity INT '$.Item.Quantity'
);
Itt van az eredményhalmaz.
| Number | Date | Customer | Quantity |
|---|---|---|---|
SO43659 |
2024-05-31T00:00:00 |
AW29825 |
1 |
SO43661 |
2024-06-01T00:00:00 |
AW73565 |
3 |
Ez a függvény egy JSON-tömb elemeit adja vissza és formázja.
A JSON-tömb minden eleméhez
OPENJSONlétrehoz egy új sort a kimeneti táblában. A JSON-tömb két eleme a visszaadott tábla két sorává lesz konvertálva.A
colName type json_pathszintaxissal megadott minden egyes oszlop esetébenOPENJSONa megadott elérési út egyes tömbelemeiben található értéket a megadott típusra konvertálja. Ebben a példában aDateoszlop értékei a$.Order.Dateelérési út minden eleméből származnak, és dátum/idő értékekké alakulnak.
További információkért és példákért lásd: OpenJSON használata explicit sémával.
Szintaxis és használat: OPENJSON.
Az OPENJSON 130-es kompatibilitási szintet igényel
A OPENJSON függvény csak kompatibilitási szintű 130 és nagyobb szinten érhető el. Ha a adatbázis kompatibilitási szintje alacsonyabb, mint 130, az SQL Server nem találja és nem futtatja a OPENJSON függvényt. A többi beépített JSON-függvény minden kompatibilitási szinten elérhető.
A kompatibilitási szintet sys.databases nézetben vagy az adatbázis tulajdonságaiban ellenőrizheti, és az alábbi paranccsal módosíthatja az adatbázis kompatibilitási szintjét:
ALTER DATABASE <DatabaseName> SET COMPATIBILITY_LEVEL = 130;