適用於:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
分析平台系統(PDW)
Microsoft Fabric 中的 SQL 資料庫
傳回基底資料型別和 sql_variant 值的其他相關資訊。
Syntax
SQL_VARIANT_PROPERTY ( expression , property )
Note
Azure Synapse Analytics 的無伺服器 SQL 集區不支援此語法。
Arguments
expression
為 sql_variant 類型的運算式。
property
包含要為其提供資訊的 sql_variant 屬性名稱。
property 為 varchar( 128 ) ,可以是下列值中的任何一個:
| Value | Description | 傳回的 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 = 輸入無效。 |
| Precision | 數值基底資料型別的位數: 日期 = 10 日期時間 = 23 日期時間2 = 27 當 s = 0 時,datetime2 (s) = 19,否則 s + 20 Datetimeoffset = 34 當 s = 0 時,datetimeoffset (s) = 26,否則 s + 27 小約會時間 = 16 時間 = 16 當 s = 0 時,time (s) = 8,否則 s + 9 浮點 數 = 53 實數 = 24 decimal 和 numeric = 18 decimal (p,s) 和 numeric (p,s) = p 金錢 = 19 小錢 = 10 微型單位 = 19 智力 = 10 smallint = 5 tinyint = 3 位元 = 1 其他所有類型 = 0 |
int NULL = 輸入無效。 |
| Scale | 數值基底資料型別小數點右側的位數: decimal 和 numeric = 0 decimal (p,s) 和 numeric (p,s) = s money 和 smallmoney = 4 日期時間 = 3 日期時間2 = 7 datetime2 (s) = s (0 - 7) Datetimeoffset = 7 datetimeoffset (s) = s (0 - 7) 時間 = 7 time (s) = s (0 - 7) 其他所有類型 = 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
Examples
A. 在資料表中使用 sql_variant
下列範例會擷取有關 SQL_VARIANT_PROPERTY 值 colA 的 46279.1 資訊,其中 colB =1689 (若 tableA 有類型為 colA 的 sql_variant 及 colB)。
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 作為變數
下列範例會擷取名為 SQL_VARIANT_PROPERTY 之變數的相關 @v1 資訊。
DECLARE @v1 sql_variant;
SET @v1 = 'ABC';
SELECT @v1;
SELECT SQL_VARIANT_PROPERTY(@v1, 'BaseType');
SELECT SQL_VARIANT_PROPERTY(@v1, 'MaxLength');