Certamente NON :
-
TEXT, NTEXT
:questi tipi sono obsoleti a partire da SQL Server 2005 e non deve essere utilizzato per nuovi sviluppi. UsaVARCHAR(MAX)
oNVARCHAR(MAX)
invece -
IMAGE
,VARBINARY(MAX)
:IMAGE
è deprecato proprio comeTEXT/NTEXT
, e non ha davvero senso archiviare una stringa di testo in una colonna binaria....
Quindi in pratica rimane VARCHAR(x)
o NVARCHAR(x)
:VARCHAR
memorizza stringhe non Unicode (1 byte per carattere) e NVARCHAR
memorizza tutto in una modalità Unicode a 2 byte per carattere. Quindi hai bisogno di Unicode? Hai caratteri arabi, ebraici, cinesi o altri caratteri non dell'Europa occidentale nelle tue stringhe, potenzialmente? Quindi vai con NVARCHAR
Il (N)VARCHAR
le colonne sono di due tipi:o definisci una lunghezza massima che risulta in 8000 byte o meno (VARCHAR
fino a 8000 caratteri, NVARCHAR
fino a 4000) o, se non basta, usa il (N)VARCHAR(MAX)
versioni, che memorizzano fino a 2 GByte di dati.
Aggiornamento: SQL Server 2016 avrà il supporto JSON nativo:un nuovo JSON
datatype (basato su nvarchar
) verrà introdotto, oltre a un FOR JSON
comando per convertire l'output di una query in formato JSON
Aggiornamento n. 2: nel prodotto finale, Microsoft non ha incluso un JSON
separato datatype - invece, ci sono un certo numero di funzioni JSON (per impacchettare le righe del database in JSON o per analizzare JSON in dati relazionali) che operano su colonne di tipo NVARCHAR(n)