sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cuál es el mejor tipo de datos SQL para almacenar cadenas JSON?

Ciertamente NO :

  • TEXT, NTEXT :esos tipos están en desuso a partir de SQL Server 2005 y no debe usarse para nuevos desarrollos. Usa VARCHAR(MAX) o NVARCHAR(MAX) en cambio

  • IMAGE , VARBINARY(MAX) :IMAGE está en desuso al igual que TEXT/NTEXT , y realmente no tiene sentido almacenar una cadena de texto en una columna binaria....

Eso básicamente deja VARCHAR(x) o NVARCHAR(x) :VARCHAR almacena cadenas no Unicode (1 byte por carácter) y NVARCHAR almacena todo en un modo Unicode de 2 bytes por carácter. Entonces, ¿necesitas Unicode? ¿Posiblemente tiene caracteres árabes, hebreos, chinos u otros caracteres no europeos occidentales en sus cadenas? Luego ve con NVARCHAR

El (N)VARCHAR las columnas vienen en dos tipos:o bien define una longitud máxima que da como resultado 8000 bytes o menos (VARCHAR hasta 8000 caracteres, NVARCHAR hasta 4000), o si eso no es suficiente, use el (N)VARCHAR(MAX) versiones, que almacenan hasta 2 GByte de datos.

Actualización: Servidor SQL 2016 tendrá soporte JSON nativo - un nuevo JSON tipo de datos (que se basa en nvarchar ), así como un FOR JSON comando para convertir la salida de una consulta en formato JSON

Actualización n.º 2: en el producto final, Microsoft no incluyó un JSON separado tipo de datos:en cambio, hay una serie de funciones JSON (para empaquetar filas de bases de datos en JSON, o para analizar JSON en datos relacionales) que operan en columnas de tipo NVARCHAR(n)