다음을 통해 공유


SQL_VARIANT_PROPERTY (Transact-SQL)

적용 대상:SQL 서버Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics분석 플랫폼 시스템(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 속성의 이름이 포함됩니다. 속성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 숫자 기본 데이터 형식의 전체 자릿수

날짜 = 10

날짜 = 23

날짜 2 = 27

datetime2 (s) = 19 시 s = 0, 그렇지 않으면 s + 20

Datetimeoffset = 34

DateTimeOffset (s) = 26 시 s = 0, 그렇지 않으면 s + 27

smalldatetime = 16

시간 = 16

시간 (s) = 8 일 때 s = 0일 때, 그렇지 않으면 s + 9

float = 53

실수 = 24

decimalnumeric = 18

decimal (p,s) 및 numeric (p,s) = p

= 19

스몰머니 = 10

빅틴 트 = 19

정수 = 10

smallint = 5

tinyint = 3

비트 = 1

기타 모든 유형 = 0
int

NULL = 입력이 잘못되었습니다.
Scale 숫자 기반 데이터 형식의 소수점 이하 자릿수

decimalnumeric = 0

decimal (p,s) 및 numeric (p,s) = s

moneysmallmoney = 4

날짜 = 3

datetime2 = 7

날짜 2 (s) = s (0 - 7)

Datetimeoffset = 7

DateTimeoffset (s) = s (0 - 7)

시간 = 7

시간 (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

Examples

A. 테이블에서 sql_variant 사용

다음 예에서는 SQL_VARIANT_PROPERTYcolA46279.1 형식의 colB가 있는 경우 =1689tableA일 때 colAsql_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  

결과 집합은 다음과 같습니다. 이 세 값은 각각 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');  

또한 참조하십시오

sql_variant (Transact-SQL)