Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: Sql Server 2025 (17.x)
Database
SQL di Azure Istanza
gestita di SQL di Azurein Microsoft Fabric
Il tipo di dati JSON archivia i documenti JSON in un formato binario nativo.
Il tipo json offre un'archiviazione ad alta fedeltà dei documenti JSON ottimizzati per semplificare l'esecuzione di query e la manipolazione e offre i vantaggi seguenti rispetto all'archiviazione di dati JSON come varchar o nvarchar:
- Letture più efficienti, in quanto il documento è già analizzato
- Scritture più efficienti, in quanto la query può aggiornare singoli valori senza accedere all'intero documento
- Archiviazione più efficiente, ottimizzata per la compressione
- Nessuna modifica della compatibilità con il codice esistente
Il tipo json archivia internamente i dati usando la codifica UTF-8, Latin1_General_100_BIN2_UTF8. Questo comportamento corrisponde alla specifica JSON.
Per altre informazioni sull'esecuzione di query sui dati JSON, vedere Dati JSON in SQL Server.
Sintassi di esempio
La sintassi di utilizzo per il tipo json è simile a tutti gli altri tipi di dati di SQL Server in una tabella.
column_name JSON [ NOT NULL | NULL ] [CHECK ( constraint_expression ) ] [ DEFAULT ( default_expression ) ]
Il tipo di dati json può essere usato nella definizione di colonna contenuta in un'istruzione CREATE TABLE . Per esempio:
CREATE TABLE Orders
(
order_id INT,
order_details JSON NOT NULL
);
I vincoli possono essere specificati come parte della definizione di colonna. Per esempio:
CREATE TABLE Orders
(
order_id INT,
order_details JSON NOT NULL
CHECK (JSON_PATH_EXISTS(order_details, '$.basket') = 1)
);
Disponibilità delle funzionalità
Il supporto delle funzioni JSON è stato introdotto per la prima volta in SQL Server 2016 (13.x). Il tipo nativo json è stato introdotto in Azure SQL Database e Azure SQL Managed Instance, ed è disponibile anche in SQL Server 2025 (17.x).
Il tipo di dati json è disponibile in tutti i livelli di compatibilità del database.
Note
Tipo di dati JSON:
- è disponibile a livello generale per il database SQL di Azure e l'istanza gestita di SQL di Azure con i criteri di aggiornamento di SQL Server 2025 o Always-up-to-date.
- è disponibile in anteprima per SQL Server 2025 (17.x) e il database SQL in Fabric.
Metodo modify
Note
Il modify metodo è attualmente in anteprima ed è disponibile solo in SQL Server 2025 (17.x).
Il tipo di dati json supporta il modify metodo . Usare modify per modificare i documenti JSON archiviati in una colonna. Il modify metodo include ottimizzazioni per eseguire modifiche sul posto ai dati laddove possibile ed è il modo migliore per modificare un documento JSON in una colonna JSON .
Per le stringhe JSON, se il nuovo valore è minore o uguale al valore esistente, è possibile apportare modifiche sul posto.
Per i numeri JSON, se il nuovo valore è dello stesso tipo o nell'intervallo del valore esistente, è possibile apportare modifiche sul posto.
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;
Supporto delle funzioni
Tutte le funzioni JSON supportano il tipo di dati JSON senza modifiche al codice o la differenza di utilizzo necessaria.
-
OPENJSONattualmente non supporta il tipo di dati json in alcune piattaforme. Per altre informazioni, vedere Limitazioni.
Per un elenco completo delle funzioni JSON, vedere Funzioni JSON.
Indexes
Non esistono tipi di indici speciali per i dati JSON.
Il tipo json non può essere usato come colonna chiave in un'istruzione CREATE INDEX . Tuttavia, una colonna JSON può essere specificata come colonna inclusa in una definizione di indice. Inoltre, una colonna JSON può essere visualizzata nella WHERE clausola di un indice filtrato.
Conversion
È possibile eseguire la conversione esplicita usando CAST o CONVERT dal tipo json ai tipi char, nchar, varchar e nvarchar . Tutte le conversioni implicite non sono consentite, analogamente al comportamento di xml. Analogamente, solo char, nchar, varchar e nvarchar possono essere convertiti in modo esplicito nel tipo di dati json .
Il tipo di dati json non può essere usato con il tipo sql_variant o assegnato a una variabile o a una colonna sql_variant . Questa restrizione è simile ai tipi di dati basati su varchar(max), varbinary(max), nvarchar(max), xml e CLR.
È possibile convertire colonne esistenti come varchar(max) in json usando ALTER TABLE. Analogamente al tipo di dati xml , non è possibile convertire una colonna JSON in uno dei tipi stringa o binari usando ALTER TABLE.
Per altre informazioni, vedere Conversione dei tipi di dati (motore di database).
Compatibility
Il tipo di dati json può essere usato come parametro o tipo restituito in una funzione definita dall'utente o come parametro di una stored procedure. Il tipo json è compatibile con trigger e visualizzazioni.
Attualmente, il formato nativo dello strumento bcp contiene il documento json come varchar o nvarchar. È necessario specificare un file di formato per designare una colonna json .
Non è consentita la creazione del tipo di alias usando CREATE TYPE per il tipo di dati json . Questo comportamento corrisponde al tipo di dati xml .
L'uso con SELECT ... INTO il tipo di dati json crea una tabella con il tipo json .
Limitations
Il comportamento di CAST ( ... AS JSON) restituisce un tipo di dati json , ma la stored procedure di sistema sp_describe_first_result_set non restituisce correttamente il tipo di dati json . Di conseguenza, molti client e driver di accesso ai dati vedono un tipo di dati varchar o nvarchar .
- Attualmente, TDS >= 7.4 (con UTF-8) vede varchar(max) con
Latin_General_100_bin2_utf8. - Attualmente, TDS < 7.4 vede nvarchar(max) con regole di confronto del database.
Attualmente, la OPENJSON() funzione non accetta il tipo di dati JSON in alcune piattaforme. Attualmente, si tratta di una conversione implicita. Convertire in modo esplicito in nvarchar(max) per primo.
- In SQL Server 2025 (17.x), la
OPENJSON()funzione supporta json. Per altre informazioni, vedere Funzionalità JSON chiave in SQL Server 2025.
Limitazioni delle dimensioni
Limiti di dimensioni dei dati JSON nell'archiviazione:
| Campo | Limitation |
|---|---|
| Dimensioni del tipo di dati JSON (binario) | Fino a 2 GB |
| Numero di chiavi univoco | Fino a 32.000 |
| Per dimensione della stringa di chiave | 7998 byte |
| Dimensioni per valore stringa | byte 536870911 |
| Numero di proprietà in un oggetto | Fino a 65535 |
| Numero di elementi in una matrice | Fino a 65535 |
| Numero di livelli annidati nel documento JSON | 128 |