SQL_VARIANT_PROPERTY (Transact-SQL)
Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)
Возвращает базовый тип данных и другие сведения о значении sql_variant.
Соглашения о синтаксисе Transact-SQL
Синтаксис
SQL_VARIANT_PROPERTY ( expression , property )
Примечание.
Этот синтаксис не поддерживается бессерверным пулом SQL в Azure Synapse Analytics.
Аргументы
выражение
Выражение типа sql_variant.
свойство
Содержит имя свойства sql_variant, для которого будут предоставлены сведения. Аргумент property имеет тип varchar(128) и может принимать одно из перечисленных ниже значений.
значение | Описание | Возвращаемый базовый тип sql_variant |
---|---|---|
BaseType | Тип данных SQL Server, например: bigint binary bit char date datetime datetime2 datetimeoffset десятичное float int money nchar numeric nvarchar real smalldatetime smallint smallmoney time tinyint uniqueidentifier varbinary varchar |
sysname NULL = Введенные значения недопустимы. |
Точность | Количество знаков числового базового типа данных: date = 10 datetime = 23 datetime2 = 27 datetime2 (s) = 19 when s = 0, else s + 20 datetimeoffset = 34 datetimeoffset (s) = 26 when s = 0, else s + 27 smalldatetime = 16 time = 16 time (s) = 8 when s = 0, else s + 9 float = 53 real = 24 decimal и numeric = 18 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 и numeric = 0 decimal (p,s) и numeric (p,s) = s money и smallmoney = 4 datetime = 3 datetime2 = 7 datetime2 (s) = s (0 - 7) datetimeoffset = 7 datetimeoffset (s) = s (0 - 7) time = 7 time (s) = s (0 - 7) все остальные типы = 0 |
int NULL = Введенные значения недопустимы. |
TotalBytes | Число байтов, необходимое для хранения данных и метаданных значения. Эта информация может быть полезной при проверке максимального размера данных в столбце sql_variant. Если значение превышает 900, создание индекса завершается сбоем. | int NULL = Введенные значения недопустимы. |
Параметры сортировки | Представляет параметры сортировки конкретного значения sql_variant. | sysname NULL = Введенные значения недопустимы. |
MaxLength | Максимальная длина типа данных, в байтах. Например, MaxLengthnvarchar(50) равно 100, а MaxLengthint равно 4. | int NULL = Введенные значения недопустимы. |
Типы возвращаемых данных
sql_variant
Примеры
А. Использование 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)
B. Использование типа sql_variant в качестве переменной
В приведенном ниже примере происходит получение сведений SQL_VARIANT_PROPERTY
о переменной с именем @v1.
DECLARE @v1 sql_variant;
SET @v1 = 'ABC';
SELECT @v1;
SELECT SQL_VARIANT_PROPERTY(@v1, 'BaseType');
SELECT SQL_VARIANT_PROPERTY(@v1, 'MaxLength');