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