SQL_VARIANT_PROPERTY (Transact-SQL)
傳回基底資料類型和 sql_variant 值的其他相關資訊。
語法
SQL_VARIANT_PROPERTY ( expression , property )
引數
expression
這是 sql_variant 類型的運算式。property
包含提供的資訊所屬的 sql_variant 屬性名稱。property 是 varchar(128),它可以是下列值之一。值
描述
傳回的 sql_variant 的基底類型
BaseType
SQL Server 資料類型,例如:
bigint
binary
char
date
datetime
datetime2
datetimeoffset
decimal
float
int
money
nchar
numeric
nvarchar
real
smalldatetime
smallint
smallmoney
time
tinyint
uniqueidentifier
varbinary
varchar
sysname
NULL = 輸入無效。
Precision
數值基底資料類型的位數:
datetime = 23
smalldatetime = 16
float = 53
real = 24
decimal (p,s) 和 numeric (p,s) = p
money = 19
smallmoney = 10
bigint = 19
int = 10
smallint = 5
tinyint = 3
bit = 1
其他所有類型 = 0
int
NULL = 輸入無效。
Scale
數值基底資料類型小數點右側的位數:
decimal (p,s) 和 numeric (p,s) = s
money 和 smallmoney = 4
datetime = 3
其他所有類型 = 0
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
範例
下列範例會擷取有關 colA 值 46279.1 的 SQL_VARIANT_PROPERTY 資訊,如果 tableA 有 colB 和 sql_variant 類型的 colA,則 colB =1689。
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)