分享方式:


SQL_VARIANT_PROPERTY (Transact-SQL)

適用於: SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW)

傳回基底資料型別和 sql_variant 值的其他相關資訊。

Transact-SQL 語法慣例

Syntax

SQL_VARIANT_PROPERTY ( expression , property )  

注意

Azure Synapse Analytics 的無伺服器 SQL 集區不支援此語法。

引數

expression
sql_variant 類型的運算式。

property
包含要為其提供資訊的 sql_variant 屬性名稱。 propertyvarchar( 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

當 s = 0 時,datetime2 (s) = 19,否則 s + 20

datetimeoffset = 34

當 s = 0 時,datetimeoffset (s) = 26,否則 s + 27

smalldatetime = 16

time = 16

當 s = 0 時,time (s) = 8,否則 s + 9

float = 53

real = 24

decimalnumeric = 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 = 輸入無效。
調整 數值基底資料型別小數點右側的位數:

decimalnumeric = 0

decimal (p,s) 和 numeric (p,s) = s

moneysmallmoney = 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,intMaxLength 為 4。 int

NULL = 輸入無效。

傳回型別

sql_variant

範例

A. 在資料表中使用 sql_variant

下列範例會擷取有關 colA46279.1SQL_VARIANT_PROPERTY 資訊,其中 colB =1689 (若 tableA 有類型為 sql_variantcolAcolB)。

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)