次の方法で共有


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

使用例

次の例では、colB =1689 の colA 値 46279.1 に関する SQL_VARIANT_PROPERTY 情報を取得しています。tableA には sql_variant 型の colA と、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

以下に結果セットを示します。値は 3 つとも sql_variant です。

Base Type    Precision    Scale
---------    ---------    -----
decimal      8           2

(1 row(s) affected)

関連項目

参照

sql_variant (Transact-SQL)