какие типы данных существуют в ms sql server
Типы данных в T-SQL (Microsoft SQL Server)
Материал сегодня будет посвящен рассмотрению типов данных языка T-SQL – это язык программирования, которой используется в СУБД Microsoft SQL Server. Мы поговорим о том, какие существуют типы данных, какие у них особенности, а также в каких случаях использовать тот или иной тип данных.
Если Вы только начинаете изучать T-SQL, то на нашем сайте Вы можете найти полезные материалы для новичков на данную тему, например статьи «Справочник Transact-SQL» и «Основы программирования на T-SQL», где мы рассматривали основные моменты данного языка.
В перечисленных выше материалах мы затрагивали типы данных, но подробно о них не разговаривали, поэтому сегодня мы рассмотрим данную тему более подробно, так как понимание типов данных поможет Вам правильно спроектировать БД или написать процедуру. Например, выбор оптимального (корректного) типа данных для столбца в таблице может в будущем отразиться на размере базы (если таблица будет интенсивно расти), а именно она будет значительно меньше, чем, если бы Вы выбрали какой-то некорректный тип данных, причем это разница может достигать несколько сотен мегабайт, а то и нескольких гигабайт!
Итак, давайте начинать.
Что такое тип данных в SQL Server?
Тип данных – это характеристика, определяющая, какого рода данные будут храниться в объекте. Например: целые числа, числовые данные с плавающей запятой, данные денежного типа, дата, время, текст, двоичные данные и так далее. У каждого столбца, выражения, переменной или параметра есть определенный тип данных. В Microsoft SQL Server существует набор системных типов данных, который и определяет все доступные по умолчанию типы данных для использования. У разработчиков также существует возможность создавать псевдонимы типов данных основанные на системных типах, а также собственные пользовательские типы данных, о том, как реализовать псевдоним типа данных, мы разговаривали в материале – «Создание псевдонима типа данных в Microsoft SQL Server на T-SQL».
Типы данных в MS SQL Server делятся на следующие категории:
Описание типов данных в T-SQL
Сейчас давайте рассмотрим типы данных по категориям.
Точные числа
Приблизительные числа
Наименование типа | Хранилище | Описание |
float (n) | Зависит от значения n: От 1 до 24 (7 знаков) = 4 байта; От 25 до 53 (15 знаков) = 8 байт. | Используется для числовых данных с плавающей запятой. n — это количество битов, используемых для хранения мантиссы числа в формате float при экспоненциальном представлении. n определяет точность данных и размер для хранения. Может принимать значение от 1 до 53, по умолчанию 53. Диапазон значений от –1,79E +308 до 1,79E+308. |
real | 4 байта | Используется для числовых данных с плавающей запятой. real соответствует в ISO типу float(24). Диапазон значений от –3.40E+38 до 3.40E+38. |
Не рекомендуется использовать столбцы с типами float и real в предложении WHERE, так как данные типы не хранят точных значений. Также не рекомендуется использовать float и real в финансовых приложениях, в операциях, связанных с округлением. Для этого лучше использовать decimal, money или smallmoney.
Символьные строки
Наименование типа | Хранилище | Описание |
char (n) | n байт | Строка с фиксированной длиной не в Юникоде, где n длина строки (от 1 до 8000). По умолчанию n = 1, если значение n не указано при использовании функций CAST и CONVERT, длина по умолчанию равна 30. |
varchar ( n | max ) | Размер занимаемой памяти в байтах = количество введенных символов + 2 байта. Если указать MAX, то максимально возможный размер = 2^31-1 байт (2 ГБ). | Строковые данные переменной длины не в Юникоде, где n длина строки (от 1 до 8000). По умолчанию n = 1, если значение n не указано при использовании функций CAST и CONVERT, длина по умолчанию равна 30. |
text | Размер занимаемой памяти в байтах = количество введенных символов. Максимальный размер 2^31-1 (2 147 483 647 байт, 2 ГБ). | Строка переменной длины не в Юникоде. Является устаревшим типом данных, рекомендуется использовать varchar(max). |
Символьные строки в Юникоде
Наименование типа | Хранилище | Описание |
nchar (n) | n * 2 байт | Строка с фиксированной длиной в Юникоде, где n длина строки (от 1 до 4000). По умолчанию n = 1, если значение n не указано при использовании в функции CAST, длина по умолчанию равна 30. |
nvarchar ( n | max ) | Размер занимаемой памяти в байтах = количество введенных символов, умноженное на 2 + 2 байта. Если указать MAX, то максимально возможный размер = 2^31-1 байт (2 ГБ). | Строка переменной длины в Юникоде, где n длина строки (от 1 до 4000). По умолчанию n = 1, если значение n не указано при использовании в функции CAST, длина по умолчанию равна 30. |
ntext | Размер занимаемой памяти в байтах = количество введенных символов, умноженное на 2. Максимальный размер 2^30 — 1 (1 073 741 823 байт, 1 ГБ). | Строка переменной длины в Юникоде. Является устаревшим типом данных, рекомендуется использовать nvarchar(max). |
Дата и время
Наименование типа | Хранилище | Диапазон | Точность | Описание |
date | 3 байта | От 01.01.0001 до 31.12.9999 | 1 день | Используется для хранения даты. |
datetime | 8 байт | От 01.01.1753 00:00:00 до 31.12.9999 23:59:59,997 | 0,00333 секунды | Используется для хранения даты, включая время с точностью до одной трехсотой секунды. |
datetime2 | От 6 до 8 байт (в зависимости от точности: менее 3 цифр = 6 байт, 3-4 цифры = 7 байт, более 4 цифр = 8 байт) | От 01.01.0001 00:00:00.0000000 до 31.12.9999 23:59:59.9999999 | 100 наносекунд | Расширенный вариант типа данных datetime, имеет более широкий диапазон дат и большую точность в долях секунды (до 7 цифр). |
smalldatetime | 4 байта | От 01.01.1900 00:00:00 до 06.06.2079 23:59:00 | 1 минута | Сокращенный вариант типа данных datetime, имеет меньший диапазон дат и не имеет долей секунд. |
time [Точность] | От 3 до 5 байт | От 00:00:00.0000000 до 23:59:59.9999999 | 100 наносекунд | Используется для хранения времени дня. Точность может быть целым числом от 0 до 7, по умолчанию 7 (100 наносекунд, 5 байт). Если указать 0, то точность будет до секунды (3 байта). |
datetimeoffset [Точность] | От 8 до 10 байт | От 01.01.0001 00:00:00.0000000 до 9999-12-31 23:59:59.9999999 | 100 наносекунд | Используется для хранения даты и времени, включая смещение часовой зоны относительно универсального глобального времени. Точность определяет количество знаков в дробной части секунды, данное значение может быть от 0 до 7, по умолчанию 7 (100 наносекунд, 10 байт). |
Двоичные данные
Наименование типа | Хранилище | Описание |
binary (n) | n байт | Двоичные данные фиксированной длины. n — значение от 1 до 8000. Если не указывать n, то значение по умолчанию 1, если не указать в функции CAST, то 30. Данный тип лучше использовать в случаях, когда размер данных, которые будут храниться в столбце, можно заранее определить. |
varbinary ( n | max ) | Размер занимаемой памяти в байтах = фактический размер данных + 2 байта. Если указать MAX, то максимально возможный размер = 2^31-1 байт (2 ГБ). | Двоичные данные с переменной длиной. n — значение от 1 до 8000. Если не указывать n, то значение по умолчанию 1, если не указать в функции CAST, то 30. Данным типом лучше пользоваться, если размер данных в столбце заранее определить трудно. Если размер данных превышает 8000 байт, необходимо использовать тип varbinary(max). |
image | Максимальный размер до 2^31-1 (2 147 483 647 байт, 2 ГБ). | Двоичные данные с переменной длиной. Является устаревшим типом данных, рекомендуется использовать varbinary(max). |
Прочие типы данных
Наименование типа | Хранилище | Описание |
cursor | Данный тип данных можно использовать в переменных или выходных параметрах хранимых процедур, которые содержат ссылку на курсор. Тип cursor не может быть использован в инструкции CREATE TABLE, т.е. для столбца в таблице. Может принимать значение NULL. | |
table | Особый тип данных для переменных, который предназначен для хранения результирующего набора данных. Переменные с данным типом называют – табличные переменные. Подробней о переменных с типом table мы разговаривали в материале — «Табличные переменные в Microsoft SQL Server». | |
sql_variant | Универсальный тип данных, который может хранить значения различных типов данных. Однако sql_variant может хранить значения не всех типов, которые есть в SQL сервере, например следующие типы нельзя сохранить при помощи типа данных sql_variant: varchar(max), varbinary(max), nvarchar(max), xml, text, ntext, image, rowversion, hierarchyid, datetimeoffset, а также пространственные типы данных и определяемые пользователем типы. Тип sql_variant не может также иметь sql_variant в качестве базового типа. | |
rowversion (timestamp) | 8 байт | Тип данных rowversion представляет собой автоматически создаваемые уникальные двоичные числа. В таблице может быть определен только один столбец типа rowversion. После любого обновления строки или вставки новой строки в таблицу, которая содержит столбец типа rowversion, значение увеличенной rowversion вставляется в столбец с данным типом. Поэтому столбец с типом данных rowversion не рекомендуется использовать в ключе, особенно в первичном ключе. timestamp является синонимом типа данных rowversion, но данный синтаксис устарел и его использовать нежелательно. |
xml | Не более 2 ГБ. | Используется для хранения XML-данных. Более детальную информацию Вы можете найти в статье «Transact-SQL — работа с XML». |
uniqueidentifier | 16 байт | Глобальный уникальный идентификатор (GUID). Инициализировать столбец или переменную с типом uniqueidentifier можно с помощью функции NEWID или путем преобразования строки xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, где каждый x – это шестнадцатеричная цифра (0–9 или A–F). |
hierarchyid | Максимум 892 байта | Тип данных используется для представления положения в древовидной иерархии. |
Пространственные типы | К пространственным типам относятся: geography – это географический пространственный тип данных, который используется для представления данных в системе координат круглой земли, geometry – это пространственный тип данных для представления данных в евклидовом пространстве (плоской системе координат). |
Приоритеты типов данных в T-SQL
В Microsoft SQL Server в случаях, когда оператор объединяет два выражения с разными типами данных, происходит неявное преобразование типов, если такое преобразование не поддерживается, SQL сервер будет выдавать ошибку. Чтобы определять какой тип данных из выражений преобразовывать, SQL Server применяет правила приоритета типов данных. Тип данных, который имеет меньший приоритет, будет преобразован в тип данных с большим приоритетом. Если оба выражения имеют одинаковый тип данных, результат операции будет иметь такой же тип данных.
В MS SQL Server существует следующий приоритет типов данных:
Синонимы типов данных в Microsoft SQL Server
В MS SQL Server для совместимости со стандартом ISO существуют синонимы системных типов данных. Эти синонимы можно использовать в инструкциях языка Transact-SQL точно также как и соответствующие системные типы данных, единственный момент, что после создания объекта (таблицы, процедуры) синониму назначается базовый тип данных, связанный с этим синонимом, иными словами, каких-либо признаков, что в инструкции использовался синоним, нет.
Синонимы и соответствующие им системные типы данных представлены в таблице ниже:
Системный тип данных | Синоним типа |
varbinary | Binary varying |
varchar | char varying |
char | character |
char(1) | character |
char(n) | character( n ) |
varchar(n) | character varying( n ) |
decimal | Dec |
float | Double precision |
real | float[(n)]; n = 1-7 |
float | float[(n)]; n = 8-15 |
int | Integer |
nchar(n) | national character( n ) |
nchar(n) | national char( n ) |
nvarchar(n) | national character varying( n ) |
nvarchar(n) | national char varying( n ) |
ntext | national text |
rowversion | timestamp |
Распространенные ошибки при выборе типа данных в T-SQL
В начале статьи я говорил, что выбор неоптимального типа данных может сказаться на размере базы данных, так вот одной из самых распространенных ошибок при проектировании таблицы является выбор для столбца, который должен содержать тип данных Boolean (т.е. 0 или 1), тип SMALLINT или INT. Как Вы уже поняли, такого типа данных как Boolean в T-SQL нет, поэтому для этих целей разработчики используют похожие (подходящие) типы данных и в большинстве случаев их выбор неправильный. Если Вам нужно хранить только значения 0 или 1 (т.е. как Boolean), то в T-SQL существует специальный тип данных BIT, SQL сервер выделяет для хранения всего 1 байт, но в отличие от типа TINYINT, под который также отводится 1 байт, SQL сервер оптимизирует хранение бит столбцов. Если таблица содержит не больше 8 бит столбцов, столбцы хранятся как 1 байт, если таких столбцов от 9 до 16, то 2 байта и т.д.
Для сравнения давайте посмотрим на разницу.
Таблица 1
Таблица 2 (с использованием BIT столбцов)
Сравнение
Количество строк | Размер в мегабайтах (MB) | ||
Таблица 1 | Таблица 2 (с использованием BIT столбцов) | Разница | |
1 000 | 0,02 | 0,01 | 0,01 |
10 000 | 0,15 | 0,09 | 0,07 |
100 000 | 1,53 | 0,86 | 0,67 |
1 000 000 | 15,26 | 8,58 | 6,68 |
10 000 000 | 152,59 | 85,83 | 66,76 |
100 000 000 | 1525,88 | 858,31 | 667,57 |
Как видите, после добавления нескольких миллионов строк разница будет ощутимая, и это на простой, маленькой, тестовой таблице.
Про типы данных Microsoft SQL Server у меня все, надеюсь, материал был Вам полезен! Всем тем, кто только начинает свое знакомство с языком SQL, рекомендую прочитать книгу «SQL код» – это самоучитель по языку SQL, которую написал я, и в которой я подробно, и в то же время простым языком, рассказываю о языке SQL.
Типы данных Microsoft SQL Server
Полный список всех типов данных в Microsoft SQL Server
Источники
Приоритет типов данных (Transact-SQL)
Если оператор связывает два выражения различных типов данных, то по правилам приоритета типов данных определяется, какой тип данных имеет меньший приоритет и будет преобразован в тип данных с большим приоритетом. Если неявное преобразование не поддерживается, возвращается ошибка. Если оба операнда выражения имеют одинаковый тип данных, результат операции будет иметь тот же тип данных.
В SQL Server используется следующий приоритет типов данных:
Синонимы типов данных (Transact-SQL)
Синонимы типов данных включены в SQL Server ради совместимости со спецификацией ISO. Эти синонимы и соответствующие им системные типы данных SQL Server приведены в следующей таблице.
Синоним | Системный тип данных SQL Server |
---|---|
Binary varying | varbinary |
char varying | varchar |
character | char |
character | char(1) |
character(n) | char(n) |
character varying(n) | varchar(n) |
Dec | decimal |
Double precision | float |
float[(n)] for n = 1-7 | real |
float[(n)] for n = 8-15 | float |
integer | int |
national character(n) | nchar(n) |
national char(n) | nchar(n) |
national character varying(n) | nvarchar(n) |
national char varying(n) | nvarchar(n) |
national text | ntext |
timestamp | rowversion |
Синонимы типов данных можно использовать вместо соответствующих базовых типов данных в инструкциях языка определения данных (data definition language, DDL), таких как CREATE TABLE, CREATE PROCEDURE или DECLARE @variable. Однако после создания объекта синонимы утрачивают силу. При создании объекта ему назначается базовый тип данных, связанный с синонимом. Никаких признаков того, что в инструкции, создавшей объект, был указан синоним, не остается.
Всем объектам, производным от первоначального объекта, таким, как столбцы результирующего набора или выражения, назначается базовый тип данных. Все последующие вызовы функций работы с метаданными, выполняемые для первоначального объекта и любых производных от него объектов, сообщают базовый тип данных, а не синоним. Это имеет место при работе с метаданными, например в процедуре sp_help и других системных хранимых процедурах, представлениях информационных схем и различных API-операции над метаданными, сообщающих типы данных столбцов таблицы или результирующего набора.
Точность, масштаб и длина (Transact-SQL)
Точность представляет собой количество цифр в числе. Масштаб представляет собой количество цифр справа от десятичной запятой в числе. Например: число 123,45 имеет точность 5 и масштаб 2.
В среде SQL Server максимальная точность типов данных numeric и decimal по умолчанию составляет 38 разрядов. В более ранних версиях SQL Server максимум по умолчанию составляет 28.
Длиной для числовых типов данных является количество байт, используемых для хранения числа. Длина символьной строки или данных в Юникоде равняется количеству символов. Длина для типов данных binary, varbinary и image равна количеству байт. Например, тип данных int может содержать 10 разрядов, храниться в 4 байтах и не должен содержать десятичный разделитель. Тип данных int имеет точность 10, длину 4 и масштаб 0.
При сцеплении двух выражений типа char, varchar, binary или varbinary длина результирующего выражения является суммой длин двух исходных выражений, но не превышает 8 000 символов.
При сцеплении двух выражений типа nchar или nvarchar длина результирующего выражения является суммой длин двух исходных выражений, но не превышает 4 000 символов.
Если два выражения одного и того же типа данных, но разной длины, сравниваются с помощью предложения UNION, EXCEPT или INTERSECT, длина результата будет равняться длине максимального из двух выражений.
Точность и масштаб числовых типов данных, кроме decimal, фиксированы. Если арифметический оператор объединяет два выражения одного и того же типа, результат будет иметь тот же тип данных с точностью и масштабом, определенными для этого типа. Если оператор объединяет два выражения с различными числовыми типами данных, тип данных результата будет определяться правилами старшинства типов данных. Результат имеет точность и масштаб, определенные для этого типа данных.
Следующая таблица определяет, как вычисляется точность и масштаб результата, если результат операции имеет тип decimal. Результат имеет тип decimal, если одно из следующих утверждений является истиной:
Выражения операндов обозначены как выражение e1 с точностью p1 и масштабом s1 и выражение e2 с точностью p2 и масштабом s2. Точность и масштаб для любого выражения, отличного от decimal, соответствуют типу данных этого выражения
* Точность и масштаб результата имеют абсолютный максимум, равный 38. Если значение точности превышает 38, то соответствующее значение масштаба уменьшается, чтобы по возможности предотвратить усечение целой части результата.
SQL Server, SSIS и Biml типы данных
Таблица ниже является упрощенной схемой связи между типами данныхSQL Server, SSIS и Biml. Таблица не включает все возможные комбинации и все виды типов данных, но полезна как быстрая ссылка при разработке и изучении Biml.
SQL Server | SSIS Variables | SSIS Pipeline Buffer | OLE DB | ADO.NET | Biml |
---|---|---|---|---|---|
bigint | Int64 | DT_I8 | LARGE_INTEGER | Int64 | Int64 |
binary | Object | DT_BYTES | — | Binary | Binary |
bit | Boolean | DT_BOOL | VARIANT_BOOL | Boolean | Boolean |
char | String | DT_STR | VARCHAR | StringFixedLength | AnsiStringFixedLength |
date | Object | DT_DBDATE | DBDATE | Date | Date |
datetime | DateTime | DT_DBTIMESTAMP | DATE | DateTime | DateTime |
datetime2 | Object | DT_DBTIMESTAMP2 | DBTIME2 | DateTime2 | DateTime2 |
datetimeoffset | Object | DT_DBTIMESTAMPOFFSET | DBTIMESTAMPOFFSET | DateTimeOffset | DateTimeOffset |
decimal | Decimal | DT_NUMERIC | NUMERIC | Decimal | Decimal |
float | Double | DT_R8 | FLOAT | Double | Double |
geography | — | DT_IMAGE | — | Object | Object |
geometry | — | DT_IMAGE | — | Object | Object |
hierarchyid | — | DT_BYTES | — | Object | Object |
image (*) | Object | DT_IMAGE | — | Binary | Binary |
int | Int32 | DT_I4 | LONG | Int32 | Int32 |
money | Object | DT_CY, DT_NUMERIC | CURRENCY | Currency | Currency |
nchar | String | DT_WSTR | NVARCHAR | StringFixedLength | StringFixedLength |
ntext (*) | String | DT_NTEXT | — | String | String |
numeric | Decimal | DT_NUMERIC | NUMERIC | Decimal | Decimal |
nvarchar | String | DT_WSTR | NVARCHAR | String | String |
nvarchar(max) | Object | DT_NTEXT | — | — | String |
real | Single | DT_R4 | FLOAT, DOUBLE | Single | Single |
rowversion | Object | DT_BYTES | — | Binary | Binary |
smalldatetime | DateTime | DT_DBTIMESTAMP | DATE | DateTime | DateTime |
smallint | Int16 | DT_I2 | SHORT | Int16 | Int16 |
smallmoney | Object | DT_CY, DT_NUMERIC | CURRENCY | Currency | Currency |
sql_variant | Object | DT_WSTR, DT_NTEXT | — | Object | Object |
table | Object | — | — | — | — |
text (*) | Object | DT_TEXT | — | — | AnsiString |
time | Object | DT_DBTIME2 | DBTIME2 | Time | Time |
timestamp (*) | Object | DT_BYTES | — | Binary | Binary |
tinyint | Byte | DT_UI1 | BYTE | Byte | Byte |
uniqueidentifier | String, Object | DT_GUID | GUID | Guid | Guid |
varbinary | Object | DT_BYTES | — | Binary | Binary |
varbinary(max) | Object | DT_IMAGE | — | Binary | Binary |
varchar | String | DT_STR | VARCHAR | String | AnsiString |
varchar(max) | Object | DT_TEXT | — | — | AnsiString |
xml | Object | DT_NTEXT | — | — | Xml |
(* Данные типы данных будут удалены в будущих версиях SQL Server. Избегайте использование этих типов данных в новых проектах и, по возможности, измените их в текущих проектах.)
SQL Server Data Types Length
SQL Server to MySQL, Oracle, PostgreSQL, SQLite Data Type Mapping
General Type | Type | MySQL | Oracle | PostgreSQL | SQLite |
---|---|---|---|---|---|
Exact Numerics | bit | TINYINT(1) | NUMBER(3) | BOOLEAN | INTEGER |
Exact Numerics | tinyint | TINYINT(signed) | NUMBER(3) | SMALLINT | INTEGER |
Exact Numerics | smallint | SMALLINT | NUMBER(5) | SMALLINT | INTEGER |
Exact Numerics | int | MEDIUMINT, INT | NUMBER(10) | INT | INTEGER |
Exact Numerics | bigint | BIGINT | NUMBER(19) | BIGINT | INTEGER |
Exact Numerics | decimal | DECIMAL | NUMBER(p[,s]) | DECIMAL(p,s) | REAL |
Exact Numerics | smallmoney | DOUBLE | NUMBER(10,4) | MONEY | REAL |
Exact Numerics | money | DOUBLE | NUMBER(19,4) | MONEY | REAL |
Approximate Numerics | float | FLOAT DOUBLE; REAL | FLOAT(49) | DOUBLE PRECISION | REAL |
Date and Time | date | DATE | DATE | TEXT | |
Date and Time | smalldatetime | TIMESTAMP | DATE | TIMESTAMP(0) | TEXT |
Date and Time | time | TIME | TIME | TEXT | |
Date and Time | datetime2 | DDATETIME | TIMESTAMP | TEXT | |
Date and Time | datetime | DATE | TIMESTAMP(3) | TEXT | |
Date and time | datetimeoffset | TIMESTAMP with time zone | TEXT | ||
Caracter Strings | char | CHAR | CHAR | CHAR | TEXT |
Caracter Strings | varchar | VARCHAR | VARCHAR2 | VARCHAR | TEXT |
Caracter Strings | varchar(max) | VARCHAR2 | TEXT | TEXT | |
Caracter Strings | nchar | NCHAR | NCHAR | TEXT | |
Caracter Strings | nvarchar | NCHAR | VARCHAR | TEXT | |
Caracter Strings | nvarchar(max) | VARCHAR TINYTEXT TEXT(M) MEDIUMTEXT LONGTEXT | NCHAR | TEXT | TEXT |
Caracter Strings | ntext(*) | LONG | TEXT | TEXT | |
Caracter Strings | text(*) | LONG | TEXT | TEXT | |
Binary Strings | image(*) | LONGBLOB | LONG RAW | BYTEA | BLOB |
Binary Strings | binary | BINARY | RAW | BYTEA | BLOB |
Binary Strings | varbinary | RAW | BYTEA | BLOB | |
Binary Strings | varbinary(max) | VARBINARY(M) TINYBLOB BLOB MEDIUMBLOB LONGBLOB | RAW | BYTEA | BLOB |
Other Data Types | cursor | TEXT | |||
Other Data Types | sql_variant | BLOB | TEXT | ||
Other Data Types | hierarchyid | TEXT | |||
Other Data Types | rowversion | BYTEA | TEXT | ||
Other Data Types | timestamp(*) | RAW | BYTEA | TEXT | |
Other Data Types | uniqueidentifier | CHAR | CHAR(36) | CHAR(16) | TEXT |
Other Data Types | xml | XML | TEXT | ||
Other Data Types | table | — | |||
Spatial Data Types | geometry | VARCHAR | TEXT | ||
Spatial Data Types | geography | VARCHAR | TEXT |
(* Данные типы данных будут удалены в будущих версиях SQL Server. Избегайте использование этих типов данных в новых проектах и, по возможности, измените их в текущих проектах.)