SQL_VARIANT_PROPERTY (Transact-SQL)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric SQL Database
sql_variant 値の基本データ型およびその他の情報を返します。
構文
SQL_VARIANT_PROPERTY ( expression , property )
Note
この構文は、Azure Synapse Analytics のサーバーレス SQL プールでサポートされていません。
引数
式 (expression)
sql_variant 型の式です。
property
情報を提供する sql_variant プロパティの名前です。 property は varchar( 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、int の MaxLength は 4 です。 | int NULL = 入力は無効です。 |
戻り値の型
sql_variant
例
A. テーブルで 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)
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');