Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: SQL Server 2016 (13.x) a novější verze
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (pouze bezserverový fond SQL)
Koncový bod analýzy SQL ve službě Microsoft Fabric
Sklad v Microsoft Fabric
SQL databáze v Microsoft Fabric
Funkce sady řádků OPENJSON převede text JSON na sadu řádků a sloupců. Po transformaci kolekce JSON na sadu řádků s OPENJSONmůžete na vrácených datech spustit libovolný dotaz SQL nebo ho vložit do tabulky SQL Serveru. Další informace o práci s daty JSON v databázovém stroji SQL Serveru najdete viz JSON data v SQL Serveru.
Funkce OPENJSON přebírá jeden objekt JSON nebo kolekci objektů JSON a transformuje je na jeden nebo více řádků. Ve výchozím nastavení vrátí funkce OPENJSON následující data:
- Z objektu JSON vrátí funkce všechny páry klíč/hodnota, které najde na první úrovni.
- Z pole JSON vrátí funkce všechny prvky pole s jejich indexy.
Můžete přidat volitelnou klauzuli WITH pro poskytnutí schématu, které explicitně definuje strukturu výstupu.
OPENJSON s výchozím výstupem
Pokud použijete funkci OPENJSON bez explicitního schématu výsledků – to znamená bez klauzule WITH za OPENJSON – vrátí funkce tabulku s následujícími třemi sloupci:
-
namevlastnosti ve vstupním objektu (nebo index prvku ve vstupním poli). -
valuevlastnosti nebo prvku pole. -
type(například řetězec, číslo, logická hodnota, pole nebo objekt).
OPENJSON vrátí každou vlastnost objektu JSON nebo každý prvek pole jako samostatný řádek.
Následující příklad používá OPENJSON s výchozím schématem – to znamená bez volitelné klauzule WITH – a vrátí jeden řádek pro každou vlastnost objektu JSON.
DECLARE @json NVARCHAR(MAX);
SET @json='{ "name": "John", "surname": "Doe", "age": 45, "skills": [ "SQL", "C#", "MVC" ]}';
SELECT *
FROM OPENJSON(@json);
Tady je sada výsledků.
| klíč | value | typ |
|---|---|---|
name |
John |
1 |
surname |
Doe |
1 |
age |
45 |
2 |
skills |
[ "SQL" ,"C#" ,"MVC" ] |
4 |
Další informace a příklady naleznete v tématu Použití OPENJSON s výchozím schématem.
Informace o syntaxi a použití naleznete v OPENJSON.
Výstup OPENJSON s explicitní strukturou
Když zadáte schéma výsledků pomocí klauzule WITH funkce OPENJSON, vrátí funkce tabulku pouze se sloupci, které definujete v klauzuli WITH. V volitelné klauzuli WITH zadáte sadu výstupních sloupců, jejich typů a cest ke zdrojovým vlastnostem JSON pro každou výstupní hodnotu.
OPENJSON iteruje polem objektů JSON, přečte hodnotu zadané cesty pro každý sloupec a převede hodnotu na zadaný typ.
Následující příklad používá OPENJSON se schématem pro výstup, který explicitně zadáte v klauzuli WITH.
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'
);
Tady je sada výsledků.
| Number | Date | Customer | Quantity |
|---|---|---|---|
SO43659 |
2024-05-31T00:00:00 |
AW29825 |
1 |
SO43661 |
2024-06-01T00:00:00 |
AW73565 |
3 |
Tato funkce vrátí a naformátuje prvky pole JSON.
Pro každý prvek v poli JSON
OPENJSONvygeneruje ve výstupní tabulce nový řádek. Dva prvky v poli JSON se ve vrácené tabulce převedou na dva řádky.Pro každý sloupec zadaný pomocí syntaxe
colName type json_pathOPENJSONpřevede hodnotu nalezenou v každém prvku pole na zadané cestě na zadaný typ. V tomto příkladu jsou hodnoty pro sloupecDatepřevzaty z každého prvku v cestě$.Order.Datea převedeny na hodnoty datetime.
Další informace a příklady naleznete v tématu Použití OPENJSON s explicitním schématem.
Informace o syntaxi a použití naleznete v OPENJSON.
OPENJSON vyžaduje úroveň kompatibility 130.
Funkce OPENJSON je dostupná pouze při úrovni kompatibility 130 a vyšších. Pokud je úroveň kompatibility databáze nižší než 130, SQL Server nemůže najít a spustit funkci OPENJSON. Další integrované funkce JSON jsou k dispozici na všech úrovních kompatibility.
Úroveň kompatibility můžete zkontrolovat v zobrazení sys.databases nebo ve vlastnostech databáze a změnit úroveň kompatibility databáze pomocí následujícího příkazu:
ALTER DATABASE <DatabaseName> SET COMPATIBILITY_LEVEL = 130;