SQL_VARIANT_PROPERTY (Transact-SQL)
适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW)
返回有关 sql_variant 值的基本数据类型和其他信息 。
语法
SQL_VARIANT_PROPERTY ( expression , property )
注意
Azure Synapse Analytics 中的无服务器 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
以下示例检索有关 colA
值 46279.1
的 SQL_VARIANT_PROPERTY
信息,其中,colB
=1689
,并假设 tableA
有类型为 sql_variant
和 colB
的 colA
。
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');