Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Was ist der beste SQL-Datentyp zum Speichern von JSON-Strings?

Sicherlich NICHT :

  • TEXT, NTEXT :Diese Typen sind veraltet ab SQL Server 2005 und sollte nicht für Neuentwicklungen verwendet werden. Verwenden Sie VARCHAR(MAX) oder NVARCHAR(MAX) stattdessen

  • IMAGE , VARBINARY(MAX) :IMAGE ist genau wie TEXT/NTEXT veraltet , und es macht wirklich keinen Sinn, eine Textzeichenfolge in einer binären Spalte zu speichern....

Also bleibt im Grunde VARCHAR(x) übrig oder NVARCHAR(x) :VARCHAR speichert Nicht-Unicode-Strings (1 Byte pro Zeichen) und NVARCHAR speichert alles in einem 2-Byte-pro-Zeichen-Unicode-Modus. Brauchen Sie also Unicode? Haben Sie eventuell arabische, hebräische, chinesische oder andere nicht-westeuropäische Schriftzeichen in Ihren Strings? Dann gehen Sie mit NVARCHAR

Der (N)VARCHAR Spalten gibt es in zwei Varianten:Entweder Sie definieren eine maximale Länge, die 8000 Bytes oder weniger ergibt (VARCHAR bis zu 8000 Zeichen, NVARCHAR bis zu 4000), oder wenn das nicht ausreicht, verwenden Sie den (N)VARCHAR(MAX) Versionen, die bis zu 2 GByte Daten speichern.

Aktualisierung: SQL-Server 2016 wird native JSON-Unterstützung haben - ein neues JSON Datentyp (basierend auf nvarchar ) eingeführt, sowie ein FOR JSON Befehl zum Konvertieren der Ausgabe einer Abfrage in das JSON-Format

Aktualisierung Nr. 2: im endgültigen Produkt hat Microsoft keinen separaten JSON eingefügt datatype - stattdessen gibt es eine Reihe von JSON-Funktionen (um Datenbankzeilen in JSON zu packen oder JSON in relationale Daten zu parsen), die auf Spalten vom Typ NVARCHAR(n) wirken