SQL_VARIANT_PROPERTY (Transact-SQL)
Возвращает базовый тип данных и другие сведения о значении sql_variant.
Синтаксические обозначения Transact-SQL
Синтаксис
SQL_VARIANT_PROPERTY ( expression , property )
Аргументы
expression
Выражение типа sql_variant.property
Содержит имя свойства sql_variant, для которого будут предоставлены сведения. Аргумент property имеет тип varchar(128) и может принимать любое из следующих значений.Значение
Описание
Возвращаемый базовый тип sql_variant
BaseType
Тип данных SQL Server, например:
bigint
binary
char
date
datetime
datetime2
datetimeoffset
decimal
float
int
money
nchar
numeric
nvarchar
real
smalldatetime
smallint
smallmoney
time
tinyint
uniqueidentifier
varbinary
varchar
sysname
NULL = Введенные значения недопустимы.
Точность
Количество знаков числового базового типа данных:
datetime = 23
smalldatetime = 16
float = 53
real = 24
decimal (p,s) и numeric (p,s) = p
money = 19
smallmoney = 10
bigint = 19
int = 10
smallint = 5
tinyint = 3
bit = 1
Все остальные типы = 0
int
NULL = Введенные значения недопустимы.
Масштаб
Количество знаков справа от десятичного разделителя числового базового типа данных:
decimal (p,s) и numeric (p,s) = s
money и smallmoney = 4
datetime = 3
все остальные типы = 0
int
NULL = Введенные значения недопустимы.
TotalBytes
Число байтов, необходимое для хранения данных и метаданных значения. Эта информация может быть полезной при проверке максимального размера данных в столбце sql_variant. Если значение превышает 900, создание индекса приведет к ошибке.
int
NULL = Введенные значения недопустимы.
Collation
Представляет параметры сортировки конкретного значения sql_variant.
sysname
NULL = Введенные значения недопустимы.
MaxLength
Максимальная длина типа данных, в байтах. Например, MaxLength nvarchar(50) равна 100, MaxLength int равна 4.
int
NULL = Введенные значения недопустимы.
Типы возвращаемых данных
sql_variant
Примеры
В следующем примере извлекаются данные SQL_VARIANT_PROPERTY о значении colA 46279.1, где colB =1689, при условии, что tableA имеет colA типа sql_variant и colB.
CREATE TABLE tableA(colA sql_variant, colB int)
INSERT INTO tableA values ( cast (46279.1 as decimal(8,2)), 1689)
SELECT SQL_VARIANT_PROPERTY(colA,'BaseType') AS 'Base Type',
SQL_VARIANT_PROPERTY(colA,'Precision') AS 'Precision',
SQL_VARIANT_PROPERTY(colA,'Scale') AS 'Scale'
FROM tableA
WHERE colB = 1689
Ниже приводится результирующий набор. Обратите внимание на то, что каждое из этих трех значений является sql_variant.
Base Type Precision Scale
--------- --------- -----
decimal 8 2
(1 row(s) affected)