Синонимы типов данных (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)]; n = 1-7

real

float[(n)]; 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-операции над метаданными, сообщающих типы данных столбцов таблицы или результирующего набора.

Например, можно создать таблицу, указав тип national character varying:

CREATE TABLE ExampleTable (PriKey int PRIMARY KEY, VarCharCol national character varying(10))

На самом деле столбцу VarCharCol при этом будет назначен тип данных nvarchar(10), и все последующие вызовы функций работы с метаданными будут сообщать, что этот столбец имеет тип nvarchar(10), а не national character varying(10).

См. также

Справочник

Типы данных (Transact-SQL)