text
и ntext
са отхвърлени, така че нека ги пропуснем за момент. За това, което остава, има 3 измерения:
- Unicode (UCS-2) срещу не-unicode:
N
пред името означава Unicode - Фиксирана дължина срещу променлива дължина:
var
обозначава променлива, иначе фиксирана - В ред спрямо BLOB:
(max)
като дължина обозначава BLOB, в противен случай е стойност в ред
Така че с това можете да прочетете значението на всеки тип:
CHAR(10)
:е в ред с фиксирана дължина не-Unicode с размер 10NVARCHAR(256)
:е Unicode с променлива дължина в ред с размер до 256VARCHAR(MAX)
:е BLOB с променлива дължина, не-Unicode
Отхвърлените типове text
и ntext
отговарят на новите типове varchar(max)
и nvarchar(max)
съответно.
Когато отидете на подробности, значението на in-row
спрямо BLOB
замъглява за малки дължини, както може двигателят оптимизирайте съхранението и изтеглете BLOB в ред или вкарайте стойност в ред в единицата за разпределение 'small BLOB', но това е само детайл на изпълнението. Вижте Организация на таблици и индекси
.
От гледна точка на програмиране, всички типове:CHAR
, VARCHAR
, NCHAR
, NVARCHAR
, VARCHAR(MAX)
и NVARCHAR(MAX)
, поддържа API за унифициран низ:Функции за низове
. Старият, отхвърлен тип TEXT
и NTEXT
не поддържат този API, те имат отделен, депериран, TEXT API за манипулиране. Не трябва да използвате отхвърлените типове.
BLOB типовете поддържат ефективни актуализации на място чрез използване на UPDATE table SET column.WRITE(@value, @offset)
синтаксис.
Разликата между типовете с фиксирана дължина и типовете с променлива дължина изчезва при компресиране на редове в таблица. При активирана компресия на редове, типовете с фиксирана дължина и променливата дължина се съхраняват в един и същ формат и интервалите в края не се съхраняват на диска, вижте Внедряване на компресия на ред . Обърнете внимание, че компресирането на страници предполага компресиране на редове.