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.
Gilt für: SQL Server 2025 (17.x) Vorschau der
Azure SQL-Datenbank
azureSQL Managed Instance
SQL SQL-Datenbank in Microsoft Fabric
Der native JSON-Datentyp , der JSON-Dokumente in einem systemeigenen Binärformat speichert.
Der JSON-Typ bietet eine hochwertige Speicherung von JSON-Dokumenten, die für einfache Abfragen und Manipulation optimiert sind. Er bietet die folgenden Vorteile gegenüber dem Speichern von JSON-Daten in varchar oder nvarchar:
- Effizientere Lesevorgänge, da das Dokument bereits analysiert wurde
- Effizientere Schreibvorgänge, da die Abfrage einzelne Werte aktualisieren kann, ohne auf das gesamte Dokument zuzugreifen
- Effizientere Speicherung, optimiert für die Komprimierung
- Keine Änderung der Kompatibilität mit vorhandenem Code
Der JSON-Typ speichert Daten intern mit UTF-8-Codierung, Latin1_General_100_BIN2_UTF8
. Dieses Verhalten entspricht der JSON-Spezifikation.
Weitere Informationen zum Abfragen von JSON-Daten finden Sie unter JSON-Daten in SQL Server.
Beispielsyntax
Die Verwendungssyntax für den JSON-Typ ähnelt allen anderen SQL Server-Datentypen in einer Tabelle.
column_name JSON [NOT NULL | NULL] [CHECK(constraint_expression)] [DEFAULT(default_expression)]
Der JSON-Typ kann in der Spaltendefinition in einer CREATE TABLE
-Anweisung verwendet werden, z. B.:
CREATE TABLE Orders (order_id int, order_details JSON NOT NULL);
Einschränkungen können als Teil der Spaltendefinition angegeben werden, z. B.:
CREATE TABLE Orders (order_id int, order_details JSON NOT NULL
CHECK (JSON_PATH_EXISTS(order_details, '$.basket') = 1)
);
Verfügbarkeit von Funktionen
Die JSON-Funktionsunterstützung wurde erstmals in SQL Server 2016 (13.x) eingeführt. Der systemeigene JSON- Typ wurde 2024 in Azure SQL-Datenbank und azure SQL Managed Instance eingeführt.
JSON ist unter allen Datenbankkompatibilitätsstufen verfügbar.
Hinweis
Der JSON-Datentyp:
- ist allgemein für Azure SQL-Datenbank und azure SQL Managed Instance verfügbar, die mit der Always-up-to-Datumsaktualisierungsrichtlinie konfiguriert ist.
- ist in der Vorschau für SQL Server 2025 (17.x) Vorschau.
modify-Methode
Hinweis
modify
die Methode befindet sich derzeit in der Vorschau und ist nur in SQL Server 2025 (17.x) Preview verfügbar.
Der systemeigene JSON-Typ unterstützt die modify
Methode. Dient modify
zum Ändern von JSON-Dokumenten, die in einer Spalte gespeichert sind. Die modify
Methode verfügt über Optimierungen zum Ausführen von direkten Änderungen an den Daten, sofern möglich, und ist die bevorzugte Möglichkeit, ein JSON-Dokument in einer JSON-Typspalte zu ändern.
Bei JSON-Zeichenfolgen ist der neue Wert kleiner oder gleich dem vorhandenen Wert, ist eine direkte Änderung möglich.
Bei JSON-Zahlen ist der neue Wert vom gleichen Typ oder innerhalb des Bereichs des vorhandenen Werts möglich.
DROP TABLE IF EXISTS JsonTable;
CREATE TABLE JsonTable ( id int PRIMARY KEY, d JSON );
INSERT INTO JsonTable (id, d) VALUES(1, '{"a":1, "b":"abc", "c":true}');
UPDATE JsonTable
SET d.modify('$.a', 14859)
WHERE id = 1;
UPDATE JsonTable
SET d.modify('$.b', 'def')
WHERE id = 1;
Funktionsunterstützung
Alle JSON-Funktionen unterstützen den JSON-Typ ohne Codeänderungen oder Verwendungsunterschiede.
-
OPENJSON
Derzeit wird der JSON-Datentyp auf einigen Plattformen nicht unterstützt. Weitere Informationen finden Sie unter Einschränkungen.
Eine vollständige Liste der JSON-Funktionen finden Sie unter JSON-Funktionen.
Indizes
Es gibt keine speziellen Indextypen für JSON-Daten.
Der JSON-Typ kann nicht als Schlüsselspalte in einer CREATE INDEX
-Anweisung verwendet werden. Eine JSON-Spalte kann jedoch als eingeschlossene Spalte in einer Indexdefinition angegeben werden. Darüber hinaus kann eine JSON-Spalte in der WHERE
-Klausel eines gefilterten Indexes auftauchen.
Konvertierung
Die explizite Konvertierung mit CAST
oder CONVERT
aus dem JSON-Typ kann in die Typen char, nchar, varchar und nvarchar erfolgen. Implizite Konvertierungen sind nicht zulässig, ähnlich dem Verhalten von XML. Ebenso können nur char, nchar, varchar und nvarchar explizit in den JSON-Typ konvertiert werden.
Der JSON-Typ kann nicht mit dem sql_variant-Typ verwendet oder einer sql_variant-Variable oder -Spalte zugewiesen werden. Diese Einschränkung ähnelt varchar(max), varbinary(max), nvarchar(max), xml und CLR-basierten Datentypen.
Sie können vorhandene Spalten wie eine varchar(max) Spalte in JSON- mithilfe von ALTER TABLE
konvertieren. Ähnlich wie der XML- Datentyp können Sie eine json- Spalte nicht in eine der Zeichenfolgen- oder Binärtypen konvertieren, die ALTER TABLE
verwenden.
Weitere Informationen finden Sie unter Datentypkonvertierung.
Kompatibilität
Der JSON-Typ kann als Parameter oder Rückgabetyp in einer benutzerdefinierten Funktion oder als Parameter einer gespeicherten Prozedur verwendet werden. Der JSON-Typ ist mit Triggern und Anzeigen kompatibel.
Derzeit enthält das native Format des bcp-Tools das JSON-Dokument als varchar oder nvarchar. Sie müssen eine Formatdatei angeben, um eine JSON-Datentypspalte festzulegen.
Die Erstellung des Aliastyps mit CREATE TYPE
für den JSON-Typ ist nicht zulässig. Dieses Verhalten entspricht dem XML-Typ.
Die Verwendung von SELECT ... INTO
mit dem JSON-Typ erstellt eine Tabelle mit dem JSON-Typ.
Begrenzungen
- Das Verhalten eines
CAST ( ... AS JSON)
JSON-Typs gibt zurück, aber die gespeicherte sp_describe_first_result_set Systemprozedur gibt den JSON-Datentyp nicht ordnungsgemäß zurück. Daher sehen viele Datenzugriffsclients und -treiber einen Varchar- oder nvarchar-Datentyp.- Derzeit sieht TDS >= 7,4 (mit UTF-8) varchar(max) mit
Latin_General_100_bin2_utf8
. - Derzeit sieht TDS < 7.4 nvarchar(max) mit Datenbanksortierung.
- Derzeit sieht TDS >= 7,4 (mit UTF-8) varchar(max) mit
- Derzeit akzeptiert die Funktion den
OPENJSON()
JSON-Typ in einigen Plattformen nicht. Derzeit handelt es sich um eine implizite Konvertierung. Konvertieren Sie zunächst explizit nach nvarchar(max).- In SQL Server 2025 (Vorschau) unterstützt die
OPENJSON()
Funktion den JSON-Typ . Weitere Informationen finden Sie unter Den wichtigsten JSON-Funktionen in SQL Server 2025.
- In SQL Server 2025 (Vorschau) unterstützt die