Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
S’applique à : Base de données SQL Server 2025 (17.x)
Azure SQL Database
Azure SQL Managed Instance
SQL dans Microsoft Fabric
Le type de données json stocke les documents JSON dans un format binaire natif.
Le type json fournit un stockage haute fidélité de documents JSON optimisé pour faciliter l’interrogation et la manipulation, et offre les avantages suivants sur le stockage de données JSON sous forme de varchar ou nvarchar :
- Lectures plus efficaces, car le document est déjà analysé
- Écritures plus efficaces, car la requête peut mettre à jour des valeurs individuelles sans accéder à l’intégralité du document
- Stockage plus efficace, optimisé pour la compression
- Aucune modification de la compatibilité avec le code existant
Le type json stocke en interne les données à l’aide de l’encodage UTF-8. Latin1_General_100_BIN2_UTF8 Ce comportement correspond à la spécification JSON.
Pour plus d’informations sur l’interrogation de données JSON, consultez les données JSON dans SQL Server.
Exemple de syntaxe
La syntaxe d’utilisation du type json est similaire à tous les autres types de données SQL Server dans une table.
column_name JSON [ NOT NULL | NULL ] [CHECK ( constraint_expression ) ] [ DEFAULT ( default_expression ) ]
Le type de données json peut être utilisé dans la définition de colonne contenue dans une CREATE TABLE instruction. Par exemple:
CREATE TABLE Orders
(
order_id INT,
order_details JSON NOT NULL
);
Les contraintes peuvent être spécifiées dans le cadre de la définition de colonne. Par exemple:
CREATE TABLE Orders
(
order_id INT,
order_details JSON NOT NULL
CHECK (JSON_PATH_EXISTS(order_details, '$.basket') = 1)
);
Disponibilité des fonctionnalités
La prise en charge des fonctions JSON a été introduite pour la première fois dans SQL Server 2016 (13.x). Le type json natif a été introduit dans Azure SQL Database et Azure SQL Managed Instance, et est également disponible dans SQL Server 2025 (17.x).
Le type de données json est disponible sous tous les niveaux de compatibilité de la base de données.
Note
Type de données JSON :
- est généralement disponible pour Azure SQL Database et Azure SQL Managed Instance avec la stratégie de mise à joursql Server 2025 ou Always-up-to-date.
- est disponible en préversion pour SQL Server 2025 (17.x) et la base de données SQL dans Fabric.
Méthode de modification
Note
La modify méthode est actuellement en version avant-première et disponible uniquement dans SQL Server 2025 (17.x).
Le type de données json prend en charge la modify méthode. Permet modify de modifier les documents JSON stockés dans une colonne. La modify méthode a des optimisations pour effectuer des modifications sur place des données, le cas échéant, et est la méthode recommandée pour modifier un document JSON dans une colonne JSON .
Pour les chaînes JSON, si la nouvelle valeur est inférieure ou égale à la valeur existante, la modification sur place est possible.
Pour les nombres JSON, si la nouvelle valeur est du même type ou dans la plage de la valeur existante, la modification sur place est possible.
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;
Prise en charge des fonctions
Toutes les fonctions JSON prennent en charge le type de données json sans modification de code ni différence d’utilisation nécessaire.
-
OPENJSONactuellement ne prend pas en charge le type de données json sur certaines plateformes. Pour plus d’informations, consultez Limitations.
Pour obtenir la liste complète des fonctions JSON, consultez les fonctions JSON.
Indexes
Il n’existe aucun type d’index spécial pour les données JSON.
Le type json ne peut pas être utilisé comme colonne clé dans une CREATE INDEX instruction. Toutefois, une colonne json peut être spécifiée en tant que colonne incluse dans une définition d’index. En outre, une colonne json peut apparaître dans la WHERE clause d’un index filtré.
Conversion
La conversion explicite à l’aide CAST ou CONVERT à partir du type json peut être effectuée en types char, nchar, varchar et nvarchar . Toutes les conversions implicites ne sont pas autorisées, comme le comportement de xml. De même, seul char, nchar, varchar et nvarchar peuvent être convertis explicitement en type de données json .
Le type de données json ne peut pas être utilisé avec le type sql_variant ou affecté à une variable ou une colonne sql_variant . Cette restriction similaire à varchar(max), varbinary(max), nvarchar(max), xml et clR.
Vous pouvez convertir des colonnes existantes telles que varchar(max) en json à l’aide ALTER TABLEde . Comme pour le type de données xml , vous ne pouvez pas convertir une colonne json en un des types de chaîne ou binaires à l’aide ALTER TABLEde .
Pour plus d’informations, consultez Conversion de type de données (moteur de base de données).
Compatibility
Le type de données json peut être utilisé comme paramètre ou type de retour dans une fonction définie par l’utilisateur ou le paramètre d’une procédure stockée. Le type json est compatible avec les déclencheurs et les vues.
Actuellement, le format natif de l’outil bcp contient le document json en tant que varchar ou nvarchar. Vous devez spécifier un fichier de format pour désigner une colonne json .
La création d’un type d’alias à l’aide CREATE TYPE du type de données json n’est pas autorisée. Ce comportement est identique au type de données xml .
L’utilisation SELECT ... INTO avec le type de données json crée une table avec le type json .
Limitations
Le comportement de retourne un type de CAST ( ... AS JSON) données json , mais la procédure stockée système sp_describe_first_result_set ne retourne pas correctement le type de données json . Par conséquent, de nombreux clients et pilotes d’accès aux données voient un type de données varchar ou nvarchar .
- Actuellement, TDS >= 7.4 (avec UTF-8) voit varchar(max) avec
Latin_General_100_bin2_utf8. - Actuellement, TDS < 7.4 voit nvarchar(max) avec le classement de base de données.
Actuellement, la OPENJSON() fonction n’accepte pas le type de données json dans certaines plateformes. Actuellement, il s’agit d’une conversion implicite. Convertissez explicitement en nvarchar(max) en premier.
- Dans SQL Server 2025 (17.x), la
OPENJSON()fonction prend en charge json. Pour plus d’informations, consultez Les fonctionnalités JSON clés dans SQL Server 2025.
Limites de taille
Limites de taille des données JSON dans le stockage :
| Terrain | Limitation |
|---|---|
| Taille du type de données JSON (binaire) | Jusqu’à 2 Go |
| Nombre de clés uniques | Jusqu’à 32 Ko |
| Par taille de chaîne de clé | 7998 octets |
| Par taille de valeur de chaîne | octets 536870911 |
| Nombre de propriétés dans un objet | Jusqu’à 65535 |
| Nombre d’éléments dans un tableau | Jusqu’à 65535 |
| Nombre de niveaux imbriqués dans le document JSON | 128 |