Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
              Gäller för: SQL Server 2025 (17.x) Förhandsversion av 
Azure SQL Database
Azure SQL Managed Instance
SQL Database i Förhandsversion av Microsoft Fabric
Json-datatypen lagrar JSON-dokument i ett internt binärt format.
Json-typen ger en lagring med hög återgivning av JSON-dokument som är optimerade för enkel frågekörning och manipulering och ger följande fördelar jämfört med lagring av JSON-data som varchar eller nvarchar:
- Mer effektiva läsningar eftersom dokumentet redan är parsat
- Effektivare skrivningar eftersom frågan kan uppdatera enskilda värden utan att komma åt hela dokumentet
- Effektivare lagring, optimerad för komprimering
- Ingen ändring i kompatibiliteten med befintlig kod
              Json-typen lagrar internt data med UTF-8-kodning, Latin1_General_100_BIN2_UTF8. Det här beteendet matchar JSON-specifikationen.
Mer information om hur du frågar efter JSON-data finns i JSON-data i SQL Server.
Exempelsyntax
Användningssyntaxen för json-typen liknar alla andra SQL Server-datatyper i en tabell.
column_name JSON [ NOT NULL | NULL ] [CHECK ( constraint_expression ) ] [ DEFAULT ( default_expression ) ]
              Json-datatypen kan användas i kolumndefinitionen i en CREATE TABLE -instruktion. Till exempel:
CREATE TABLE Orders
(
    order_id INT,
    order_details JSON NOT NULL
);
Begränsningar kan anges som en del av kolumndefinitionen. Till exempel:
CREATE TABLE Orders
(
    order_id INT,
    order_details JSON NOT NULL
        CHECK (JSON_PATH_EXISTS(order_details, '$.basket') = 1)
);
Tillgänglighet av funktioner
JSON-funktionsstöd introducerades först i SQL Server 2016 (13.x). Den inbyggda json-typen introducerades i Azure SQL Database och Azure SQL Managed Instance och är även tillgänglig i SQL Server 2025 (17.x) Preview.
Json-datatypen är tillgänglig under alla databaskompatibilitetsnivåer.
Note
- är allmänt tillgängligt för Azure SQL Database och Azure SQL Managed Instance med SQL Server 2025 eller Always-up-to-datumuppdateringsprincip.
- är i förhandsversion för SQL Server 2025 (17.x) Förhandsversion och SQL-databas i Infrastrukturresurser.
Ändringsmetoden
Note
Metoden modify är för närvarande i förhandsversion och är endast tillgänglig i SQL Server 2025 (17.x) Preview.
              Json-datatypen stöder modify metoden. Använd modify för att ändra JSON-dokument som lagras i en kolumn. Metoden modify har optimeringar för att utföra ändringar på plats av data där det är möjligt, och är det bästa sättet att ändra ett JSON-dokument i en json-kolumn .
Om det nya värdet är mindre än eller lika med det befintliga värdet för JSON-strängar är det möjligt att ändra på plats.
För JSON-tal, om det nya värdet är av samma typ, eller inom intervallet för det befintliga värdet, är det möjligt att ändra på plats.
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;
Funktionsstöd
Alla JSON-funktioner stöder json-datatypen utan kodändringar eller användningsskillnad som krävs.
- 
              OPENJSONstöder för närvarande inte json-datatypen på vissa plattformar. Mer information finns i Begränsningar.
En fullständig lista över JSON-funktioner finns i JSON-funktioner.
Indexes
Det finns inga särskilda indextyper för JSON-data.
              Json-typen kan inte användas som nyckelkolumn i en CREATE INDEX -instruktion. En json-kolumn kan dock anges som en inkluderad kolumn i en indexdefinition. Dessutom kan en json-kolumn visas i satsen för WHERE ett filtrerat index.
Conversion
Explicit konvertering med hjälp av CAST eller CONVERT från json-typen kan göras till typerna char, nchar, varchar och nvarchar . Alla implicita konverteringar tillåts inte, ungefär som xml-beteendet. På samma sätt kan endast char, nchar, varchar och nvarchar explicit konverteras till json-datatypen .
Json-datatypen kan inte användas med den sql_variant typen eller tilldelas till en sql_variant variabel eller kolumn. Den här begränsningen liknar varchar(max), varbinary(max), nvarchar(max), xml och CLR-baserade datatyper.
Du kan konvertera befintliga kolumner som varchar(max) till json med hjälp av ALTER TABLE. På samma sätt som xml-datatypen kan du inte konvertera en json-kolumn till någon av sträng- eller binärtyperna med hjälp av ALTER TABLE.
Mer information finns i Datatypskonvertering (databasmotor).
Compatibility
Json-datatypen kan användas som en parameter eller returtyp i en användardefinierad funktion eller parametern för en lagrad procedur. Json-typen är kompatibel med utlösare och vyer.
För närvarande innehåller bcp-verktygets interna format json-dokumentet som varchar eller nvarchar. Du måste ange en formatfil för att ange en json-kolumn .
Det går inte att skapa en aliastyp som använder CREATE TYPEför json-datatypen . Det här beteendet är detsamma som xml-datatypen .
Med hjälp av SELECT ... INTOmed json-datatypen skapas en tabell med json-typen .
Limitations
Beteendet CAST ( ... AS JSON) för returnerar en json-datatyp , men den sp_describe_first_result_set systemlagringsproceduren returnerar inte json-datatypen korrekt. Därför ser många dataåtkomstklienter och drivrutin datatypen varchar eller nvarchar .
- För närvarande ser TDS >= 7.4 (med UTF-8) varchar(max) med Latin_General_100_bin2_utf8.
- För närvarande ser TDS < 7.4 nvarchar(max) med databassortering.
              OPENJSON() För närvarande accepterar inte funktionen json-datatypen på vissa plattformar. För närvarande är det en implicit konvertering. Konvertera uttryckligen till nvarchar(max) först.
- I förhandsversionen OPENJSON()av SQL Server 2025 (17.x) stöder funktionen json. Mer information finns i Viktiga JSON-funktioner i SQL Server 2025.