Sicherlich NICHT :
-
TEXT, NTEXT
:Diese Typen sind veraltet ab SQL Server 2005 und sollte nicht für Neuentwicklungen verwendet werden. Verwenden SieVARCHAR(MAX)
oderNVARCHAR(MAX)
stattdessen -
IMAGE
,VARBINARY(MAX)
:IMAGE
ist genau wieTEXT/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