SQL_VARIANT_PROPERTY (Transact-SQL)

Область применения:yesSQL Server (все поддерживаемые версии) YesБаза данных SQL Azure YesУправляемый экземпляр SQL Azure yesAzure Synapse Analytics yesAnalytics Platform System (PDW)

Возвращает базовый тип данных и другие сведения о значении sql_variant.

Topic link iconСинтаксические обозначения в Transact-SQL

Синтаксис

SQL_VARIANT_PROPERTY ( expression , property )  

Примечание

Этот синтаксис не поддерживается бессерверным пулом SQL в Azure Synapse Analytics.

Примечание

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

Аргументы

expression
Выражение типа sql_variant.

property
Содержит имя свойства sql_variant, для которого будут предоставлены сведения. Аргумент property имеет тип varchar( 128 ) и может принимать одно из перечисленных ниже значений.

Значение Описание Возвращаемый базовый тип sql_variant
BaseType Тип данных SQL Server, например:

bigint

binary

bit

char

date

datetime

datetime2

datetimeoffset

decimal

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

Примеры

A. Использование sql_variant в таблице

В приведенном ниже примере извлекаются сведения SQL_VARIANT_PROPERTY о значении colA46279.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 в качестве переменной

В приведенном ниже примере происходит получение сведений 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');  

См. также:

sql_variant (Transact-SQL)