返回有关 sql_variant 值的基本数据类型和其它信息。
SQL_VARIANT_PROPERTY ( expression, property )
expression
是 sql_variant 类型的表达式。
property
包含将为其提供信息的 sql_variant 属性名称。property 是 varchar(128),可以是下列任何值。
值 | 描述 | 返回的 sql_variant 基本类型 |
---|---|---|
BaseType | SQL Server 数据类型,如:
char |
sysname
无效的输入 = NULL |
Precision | 数字基本数据类型的位数:
datetime = 23 |
int
无效的输入 = NULL |
Scale | 数字基本数据类型小数点右边的位数:
decimal (p,s) 和 numeric (p,s) = s |
int
无效的输入 = NULL |
TotalBytes | 要包含值的元数据和数据所需的字节数。该信息在检查 sql_variant 列中数据的最大一侧时很有用。如果该值大于 900,索引创建将失败。 | int
无效的输入 = NULL |
Collation | 代表特定 sql_variant 值的排序规则。 | sysname
无效的输入 = NULL |
MaxLength | 最大数据类型长度(以字节为单位)。例如,nvarchar(50) 的 MaxLength 是 100,int 的 MaxLength 是 4。 | int
无效的输入 = NULL |
sql_variant
下例假定 tableA 包含 colB 和属于 sql_variant 类型的 colA,检索有关值为 46279.1 的 colA(其中 colB =1689)的 SQL_VARIANT_PROPERTY 信息。
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'),
SQL_VARIANT_PROPERTY(colA,'Precision'),
SQL_VARIANT_PROPERTY(colA,'Scale')
FROM tableA
WHERE colB = 1689
下面是结果集。(注意这三个值每个都是 sql_variant。)
decimal | 8 | 2 |