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)
Azure SQL-Datenbank
AzureSQL Managed Instance
SQL SQL-Datenbank in Microsoft Fabric
Der JSON-Datentyp speichert JSON-Dokumente in einem systemeigenen Binärformat.
Der JSON-Typ bietet einen qualitativ hochwertigen Speicher von JSON-Dokumenten, die für einfache Abfragen und Manipulationen optimiert sind, und bietet die folgenden Vorteile gegenüber dem Speichern von JSON-Daten als 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 Intern Daten 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-Datentyp kann in der Spaltendefinition verwendet werden, die in einer CREATE TABLE Anweisung enthalten ist. Beispiel:
CREATE TABLE Orders
(
order_id INT,
order_details JSON NOT NULL
);
Einschränkungen können als Teil der Spaltendefinition angegeben werden. Beispiel:
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 native JSON-Typ wurde in Azure SQL Database und Azure SQL Managed Instance eingeführt und ist auch in SQL Server 2025 (17.x) verfügbar.
Der JSON-Datentyp ist unter allen Datenbankkompatibilitätsstufen verfügbar.
Note
Der JSON-Datentyp:
Die Modify-Methode
Note
Die Methode modify befindet sich derzeit in der Vorschau und ist nur in SQL Server 2025 (17.x) verfügbar.
Der JSON-Datentyp 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 Methode zum Ändern eines JSON-Dokuments in einer JSON-Spalte .
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-Datentyp ohne Codeänderungen oder Verwendungsunterschiede.
-
OPENJSONUnterstützt derzeit nicht den JSON-Datentyp auf einigen Plattformen. Weitere Informationen finden Sie unter "Einschränkungen".
Eine vollständige Liste der JSON-Funktionen finden Sie unter JSON-Funktionen.
Indexes
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 angezeigt werden.
Conversion
Explizite Konvertierung mithilfe CAST oder CONVERT aus dem JSON-Typ kann in zeichen-, nchar-, varchar- und nvarchar-Typen erfolgen. Alle impliziten Konvertierungen sind nicht zulässig, ähnlich dem Verhalten von XML. Ebenso können nur Char, nchar, varchar und nvarchar explizit in den JSON-Datentyp konvertiert werden.
Der JSON-Datentyp kann nicht mit dem sql_variant Typ verwendet oder einer sql_variant Variablen 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 varchar(max) in json konvertieren.ALTER TABLE Ähnlich wie der XML-Datentyp können Sie eine JSON-Spalte nicht in eine der Zeichenfolgen- oder Binärtypen konvertieren, die verwendet ALTER TABLEwerden.
Weitere Informationen finden Sie unter Datentypkonvertierung (Datenbankmodul).
Compatibility
Der JSON-Datentyp 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 Ansichten kompatibel.
Derzeit enthält das systemeigene Format des bcp-Tools das JSON-Dokument als varchar oder nvarchar. Sie müssen eine Formatdatei angeben, um eine JSON-Spalte festzulegen.
Die Erstellung des Aliastyps, CREATE TYPE der für den JSON-Datentyp verwendet wird, ist nicht zulässig. Dieses Verhalten entspricht dem XML-Datentyp .
Die Verwendung SELECT ... INTO mit dem JSON-Datentyp erstellt eine Tabelle mit dem JSON-Typ .
Limitations
Das Verhalten eines CAST ( ... AS JSON)JSON-Datentyps 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 akzeptiert die Funktion den OPENJSON()JSON-Datentyp in einigen Plattformen nicht. Derzeit handelt es sich um eine implizite Konvertierung. Konvertieren Sie explizit zuerst in "nvarchar(max) ".
- In SQL Server 2025 (17.x) unterstützt die
OPENJSON()Funktion JSON. Weitere Informationen finden Sie unter Den wichtigsten JSON-Funktionen in SQL Server 2025.
Größeneinschränkungen
Größenbeschränkungen von JSON-Daten im Speicher:
| Feld | Einschränkung |
|---|---|
| JSON-Datentypgröße (binär) | Bis zu 2 GB |
| Anzahl eindeutiger Schlüssel | Bis zu 32K |
| Pro Schlüsselzeichenfolgengröße | 7998 Bytes |
| Größe pro Zeichenfolgenwert | 536870911 Bytes |
| Anzahl der Eigenschaften in einem Objekt | Bis zu 65535 |
| Anzahl der Elemente in einem Array | Bis zu 65535 |
| Anzahl der geschachtelten Ebenen im JSON-Dokument | 128 |