次の方法で共有


SQL_VARIANT_PROPERTY (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric プレビューの SQL データベース

sql_variant 値の基本データ型およびその他の情報を返します。

Transact-SQL 構文表記規則

Syntax

SQL_VARIANT_PROPERTY ( expression , property )  

Note

この構文は、Azure Synapse Analytics のサーバーレス SQL プールでサポートされていません。

Arguments

expression
sql_variant 型の式です。

property
情報を提供する sql_variant プロパティの名前です。 propertyvarchar( 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 数値基本データ型の桁数です。

date = 10

datetime = 23

datetime2 = 27

datetime2 (s) = 19 when s = 0、それ以外の場合 s + 20

datetimeoffset = 34

datetimeoffset (s) = 26 when s = 0, else s + 27

smalldatetime = 16

time = 16

time (s) = 8 (s = 0 の場合)、それ以外の場合は s + 9

float = 53

real = 24

decimal および numeric = 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 = 入力は無効です。
Scale 数値基本データ型の小数点の右側の桁数です。

decimal および numeric = 0

decimal (p,s) および numeric (p,s) = s

money および smallmoney = 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 = 入力は無効です。
Collation 特定の sql_variant 値の照合順序を表します。 sysname

NULL = 入力は無効です。
MaxLength データ型の最大データ長 (バイト単位) です。 たとえば、nvarchar( 50 )MaxLength は 100、intMaxLength は 4 です。 int

NULL = 入力は無効です。

Return Types

sql_variant

Examples

A. テーブルで sql_variant を使用する

次の例では、SQL_VARIANT_PROPERTYcolA46279.1colB 値 = に関する 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  

結果セットは次のとおりです。 これら 3 つの値の各ことに注意してください、 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');  

See Also

sql_variant (Transact-SQL)