Dela via


SQL_VARIANT_PROPERTY (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-databas i Förhandsversion av Microsoft Fabric

Returnerar basdatatypen och annan information om ett sql_variant värde.

Transact-SQL syntaxkonventioner

Syntax

SQL_VARIANT_PROPERTY ( expression , property )  

Note

Den här syntaxen stöds inte av en serverlös SQL-pool i Azure Synapse Analytics.

Arguments

expression
Är ett uttryck av typen sql_variant.

property
Innehåller namnet på egenskapen sql_variant som informationen ska anges för. egenskapen är varchar(128), och kan vara något av följande värden:

Value Description Bastyp för sql_variant returneras
BaseType SQL Server-datatyp, till exempel:

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 = Indata är ogiltigt.
Precision Antal siffror av den numeriska basdatatypen:

date = 10

datetime = 23

datetime2 = 27

datetime2 (s) = 19 när s = 0, annars s + 20

datetimeoffset = 34

datetimeoffset (s) = 26 när s = 0, annars s + 27

smalldatetime = 16

time = 16

time (s) = 8 when s = 0, else s + 9

float = 53

real = 24

decimal ochnumeriskt = 18

decimal ( p,s) och numeriskt (p,s) = p

money = 19

smallmoney = 10

bigint = 19

int = 10

smallint = 5

tinyint = 3

bit = 1

Alla andra typer = 0
int

NULL = Indata är ogiltigt.
Scale Antal siffror till höger om decimaltecknet för den numeriska basdatatypen:

decimal ochnumeriskt = 0

decimal ( p,s) och numeriskt (p,s) = s

pengar och 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)

alla andra typer = 0
int

NULL = Indata är ogiltigt.
TotalBytes Antal byte som krävs för att lagra både metadata och data för värdet. Den här informationen skulle vara användbar för att kontrollera den maximala sidan av data i en sql_variant kolumn. Om värdet är större än 900 misslyckas indexskapandet. int

NULL = Indata är ogiltigt.
Collation Representerar sortering av det specifika sql_variant värdet. sysname

NULL = Indata är ogiltigt.
MaxLength Maximal datatyplängd i byte. MaxLength för nvarchar(50) är till exempel 100, MaxLength för int är 4. int

NULL = Indata är ogiltigt.

Return Types

sql_variant

Examples

A. Använda en sql_variant i en tabell

I följande exempel hämtas SQL_VARIANT_PROPERTY information om värdet colA46279.1 där1689 =colB , med tanke på att tableA har colA som är av typen sql_variant och .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  

Här är resultatet. Observera att vart och ett av dessa tre värden är en sql_variant.

Base Type    Precision    Scale  
---------    ---------    -----  
decimal      8           2  
  
(1 row(s) affected)  

B. Använda en sql_variant som en variabel

I följande exempel hämtas SQL_VARIANT_PROPERTY information om en variabel med namnet @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)