Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: SQL Server 2016 (13.x) i nowsze wersje
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (tylko bezserwerowa pula SQL)
Punkt końcowy analizy SQL w Microsoft Fabric
Magazyn w Microsoft Fabric
SQL Database w Microsoft Fabric
Funkcja zestawu wierszy OPENJSON konwertuje tekst JSON na zestaw wierszy i kolumn. Po przekształceniu kolekcji JSON w zestaw wierszy przy użyciu OPENJSONmożna uruchomić dowolne zapytanie SQL dla zwróconych danych lub wstawić je do tabeli programu SQL Server. Aby uzyskać więcej informacji na temat pracy z danymi JSON w silniku bazy danych SQL Server, zobacz dane JSON w programie SQL Server.
Funkcja OPENJSON przyjmuje pojedynczy obiekt JSON lub kolekcję obiektów JSON i przekształca je w co najmniej jeden wiersz. Domyślnie funkcja OPENJSON zwraca następujące dane:
- Z obiektu JSON funkcja zwraca wszystkie pary klucz/wartość znalezione na pierwszym poziomie.
- Z tablicy JSON funkcja zwraca wszystkie elementy tablicy z ich indeksami.
Możesz dodać opcjonalną klauzulę WITH, aby podać schemat, który jawnie definiuje strukturę danych wyjściowych.
Plik OPENJSON z domyślnymi danymi wyjściowymi
Jeśli używasz funkcji OPENJSON bez podawania jawnego schematu dla wyników — czyli bez klauzuli WITH po OPENJSON — funkcja zwraca tabelę z następującymi trzema kolumnami:
- Identyfikator
namewe właściwości obiektu wejściowego (lub indeks elementu w tablicy wejściowej). -
valuewłaściwości lub elementu tablicy. -
type(na przykład ciąg, liczba, wartość logiczna, tablica lub obiekt).
OPENJSON zwraca każdą właściwość obiektu JSON lub każdy element tablicy jako oddzielny wiersz.
W poniższym przykładzie użyto OPENJSON ze schematem domyślnym — czyli bez opcjonalnej klauzuli WITH — i zwraca jeden wiersz dla każdej właściwości obiektu JSON.
DECLARE @json NVARCHAR(MAX);
SET @json='{ "name": "John", "surname": "Doe", "age": 45, "skills": [ "SQL", "C#", "MVC" ]}';
SELECT *
FROM OPENJSON(@json);
Oto zestaw wyników.
| klucz | value | typ |
|---|---|---|
name |
John |
1 |
surname |
Doe |
1 |
age |
45 |
2 |
skills |
[ "SQL" ,"C#" ,"MVC" ] |
4 |
Aby uzyskać więcej informacji i przykładów, zobacz Użyj OPENJSON z domyślnym schematem.
Aby uzyskać informacje o składni i użyciu, zobacz OPENJSON.
Wynik OPENJSON ze zdefiniowaną strukturą
Po określeniu schematu wyników przy użyciu klauzuli WITH funkcji OPENJSON funkcja zwraca tabelę zawierającą tylko kolumny zdefiniowane w klauzuli WITH. W opcjonalnej klauzuli WITH należy określić zestaw kolumn wyjściowych, ich typów i ścieżki właściwości źródłowych JSON dla każdej wartości wyjściowej.
OPENJSON iteruje tablicę obiektów JSON, odczytuje wartość w określonej ścieżce dla każdej kolumny i konwertuje wartość na określony typ.
W poniższym przykładzie użyto OPENJSON ze schematem dla danych wyjściowych, które jawnie określono w 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'
);
Oto zestaw wyników.
| Number | Date | Customer | Quantity |
|---|---|---|---|
SO43659 |
2024-05-31T00:00:00 |
AW29825 |
1 |
SO43661 |
2024-06-01T00:00:00 |
AW73565 |
3 |
Ta funkcja zwraca i formatuje elementy tablicy JSON.
Dla każdego elementu w tablicy JSON
OPENJSONgeneruje nowy wiersz w tabeli wyjściowej. Dwa elementy w tablicy JSON są konwertowane na dwa wiersze w zwracanej tabeli.Dla każdej kolumny określonej przy użyciu składni
colName type json_pathOPENJSONkonwertuje wartość znajdującą się w każdym elemenie tablicy na określonej ścieżce do określonego typu. W tym przykładzie wartości kolumnyDatesą pobierane z każdego elementu na ścieżce$.Order.Datei konwertowane na wartości daty/godziny.
Aby uzyskać więcej informacji i przykładów, zobacz Use OPENJSON with an Explicit Schema (Używanie pliku OPENJSON z jawnym schematem).
Aby uzyskać informacje o składni i użyciu, zobacz OPENJSON.
OPENJSON wymaga poziomu zgodności 130
Funkcja OPENJSON jest dostępna tylko na poziomie zgodności 130 i nowszym. Jeśli poziom zgodności bazy danych jest niższy niż 130, program SQL Server nie może odnaleźć i uruchomić funkcji OPENJSON. Inne wbudowane funkcje JSON są dostępne na wszystkich poziomach zgodności.
Poziom zgodności można sprawdzić w widoku sys.databases lub we właściwościach bazy danych oraz zmienić poziom zgodności bazy danych przy użyciu następującego polecenia:
ALTER DATABASE <DatabaseName> SET COMPATIBILITY_LEVEL = 130;