SQL_VARIANT_PROPERTY (Transact-SQL)

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

主題連結圖示Transact-SQL 語法慣例

語法

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)