Ciertamente NO :
-
TEXT, NTEXT
:esos tipos están en desuso a partir de SQL Server 2005 y no debe usarse para nuevos desarrollos. UsaVARCHAR(MAX)
oNVARCHAR(MAX)
en cambio -
IMAGE
,VARBINARY(MAX)
:IMAGE
está en desuso al igual queTEXT/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)