SQL_VARIANT_PROPERTY (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)

返回有关 sql_variant 值的基本数据类型和其他信息 。

Transact-SQL 语法约定

语法

SQL_VARIANT_PROPERTY ( expression , property )  

注意

Azure Synapse Analytics 中的无服务器 SQL 池不支持此语法。

注意

若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

自变量

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(s = 0 时),其他情况 s + 20

datetimeoffset = 34

datetimeoffset (s) = 26(s = 0 时),其他情况 s + 27

smalldatetime = 16

time = 16

time (s) = 8(s = 0 时),其他情况 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 最大数据类型长度(字节)。 例如,nvarchar(50) 的 MaxLength 是 100,int 的 MaxLength 是 4。 int

NULL = 输入无效。

返回类型

sql_variant

示例

A. 在表中使用 sql_variant

以下示例检索有关 colA46279.1SQL_VARIANT_PROPERTY 信息,其中,colB =1689,并假设 tableA 有类型为 sql_variantcolBcolA

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 作为变量

以下示例检索有关名为 @v1 的变量的 SQL_VARIANT_PROPERTY 信息。

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)