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 2005, например:
bigint
binary
char
decimal
float
int
money
nchar
numeric
nvarchar
real
smalldatetime
smallint
smallmoney
tinyint
uniqueidentifier
varbinary
varchar
sysname
NULL = Введенные значения недопустимы.
Precision
Количество знаков числового базового типа данных:
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 = Введенные значения недопустимы.
Scale
Количество знаков справа от десятичного разделителя числового базового типа данных:
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
Максимальная длина типа данных, в байтах. Например, MaxLengthnvarchar(50) равна 100, MaxLengthint равна 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)
См. также
Справочник
Другие ресурсы
Использование данных типа sql_variant