SQL_VARIANT_PROPERTY (Transact-SQL)

適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

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

Transact-SQL 構文表記規則

構文

SQL_VARIANT_PROPERTY ( expression , property )  

Note

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

引数

式 (expression)
sql_variant 型の式です。

property
情報を提供する sql_variant プロパティの名前です。 propertyvarchar( 128 ) であり、次のいずれかの値を指定できます。

説明 返される sql_variant の基本データ型
BaseType 以下のような SQL Server のデータ型です。

bigint

[バイナリ]

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

datetime2 (s) = 19 when s = 0, else s + 20

datetimeoffset = 34

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

smalldatetime = 16

time = 16

time (s) = 8 when s = 0, else 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 = 入力は無効です。
スケール 数値基本データ型の小数点の右側の桁数です。

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 = 入力は無効です。

戻り値の型

sql_variant

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

次の例では、colB =1689colA46279.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)  

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)