다음을 통해 공유


SQL_VARIANT_PROPERTY(Transact-SQL)

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)

sql_variant 값에 대한 기본 데이터 형식 및 기타 정보를 반환합니다.

Transact-SQL 구문 표기 규칙

Syntax

SQL_VARIANT_PROPERTY ( expression , property )  

참고

이 구문은 Azure Synapse Analytics의 서버리스 SQL 풀에서 지원되지 않습니다.

인수

expression
sql_variant 형식의 식입니다.

property
정보를 제공할 sql_variant 속성의 이름이 포함됩니다. 속성varchar( 128 ) 이며 다음 값 중 하나일 수 있습니다.

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 = 입력이 잘못되었습니다.
정밀도 숫자 기본 데이터 형식의 전체 자릿수

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

decimalnumeric = 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 = 입력이 잘못되었습니다.
규모 숫자 기반 데이터 형식의 소수점 이하 자릿수

decimalnumeric = 0

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

moneysmallmoney = 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 = 입력이 잘못되었습니다.
데이터 정렬 특정 sql_variant 값의 데이터 정렬을 나타냅니다. sysname

NULL = 입력이 잘못되었습니다.
MaxLength 최대 데이터 형식 길이(바이트)입니다. 예를 들어 nvarchar( 50 )MaxLength는 100이고, intMaxLength는 4입니다. int

NULL = 입력이 잘못되었습니다.

반환 형식

sql_variant

A. 테이블에서 sql_variant 사용

다음 예에서는 tableAsql_variantcolB 형식의 colA가 있는 경우 colB =1689일 때 colA46279.1에 대한 SQL_VARIANT_PROPERTY 정보를 검색합니다.

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 사용

다음 예에서는 변수 @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)