Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Qual è il miglior tipo di dati SQL per l'archiviazione di stringhe JSON?

Certamente NON :

  • TEXT, NTEXT :questi tipi sono obsoleti a partire da SQL Server 2005 e non deve essere utilizzato per nuovi sviluppi. Usa VARCHAR(MAX) o NVARCHAR(MAX) invece

  • IMAGE , VARBINARY(MAX) :IMAGE è deprecato proprio come TEXT/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)