Синонимы типов данных (Transact-SQL)

Применимо к:база данныхSQL Server Azure SQL Управляемый экземпляр SQL Azure

Синонимы типов данных включены в SQL Server ради совместимости со спецификацией ISO. Эти синонимы и соответствующие им системные типы данных SQL Server приведены в следующей таблице.

Синоним Системный тип данных SQL Server
переменная двоичного файла varbinary
char varying varchar
character char
character char(1)
character(n) char(n)
character varying(n) varchar(n)
Декабря decimal
двойная точность 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
rowversion timestamp

Синонимы типов данных можно использовать вместо соответствующих базовых типов данных в инструкциях языка описания данных DDL. К таким инструкциям относятся CREATE TABLE, CREATE PROCEDURE и DECLARE @переменная. Однако после создания объекта синонимы утрачивают силу. При создании объекта ему назначается базовый тип данных, связанный с синонимом. Никаких признаков того, что в инструкции, создавшей объект, был указан синоним, не остается.

Объектам, производным от исходного объекта, таким как столбцы результирующего набора или выражения, назначается базовый тип данных. Все функции метаданных, которые используют исходный объект и любые производные от него объекты, сообщают базовый тип данных, а не синоним, включая:

  • операции с метаданными, такие как 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)