Absolut INTE :
-
TEXT, NTEXT
:dessa typer är utfasade från och med SQL Server 2005 och bör inte användas för nyutveckling. AnvändVARCHAR(MAX)
ellerNVARCHAR(MAX)
istället -
IMAGE
,VARBINARY(MAX)
:IMAGE
är utfasad precis somTEXT/NTEXT
, och det är verkligen ingen idé att lagra en textsträng i en binär kolumn...
Så det lämnar i princip VARCHAR(x)
eller NVARCHAR(x)
:VARCHAR
lagrar icke-Unicode-strängar (1 byte per tecken) och NVARCHAR
lagrar allt i ett Unicode-läge med 2 byte per tecken. Så behöver du Unicode? Har du eventuellt arabiska, hebreiska, kinesiska eller andra icke-västeuropeiska tecken i dina strängar? Gå sedan med NVARCHAR
(N)VARCHAR
kolumner finns i två varianter:antingen definierar du en maximal längd som resulterar i 8000 byte eller mindre (VARCHAR
upp till 8000 tecken, NVARCHAR
upp till 4000), eller om det inte räcker, använd (N)VARCHAR(MAX)
versioner, som lagrar upp till 2 GByte data.
Uppdatering: SQL Server 2016 kommer att ha inbyggt JSON-stöd - en ny JSON
datatyp (som är baserad på nvarchar
) kommer att introduceras, liksom en FOR JSON
kommando för att konvertera utdata från en fråga till JSON-format
Uppdatering #2: i slutprodukten inkluderade Microsoft inte en separat JSON
datatype - istället finns det ett antal JSON-funktioner (för att paketera databasrader till JSON, eller för att analysera JSON till relationsdata) som fungerar på kolumner av typen NVARCHAR(n)