SQL查询有关 sql_variant 值的基本数据类型和其他信息

时间:2021-07-28 17:25:33

SQL_VARIANT_PROPERTY (Transact-SQL)

 

返回有关 sql_variant 值的基本数据类型和其他信息。

 

Transact-SQL 语法约定

语法

 
SQL_VARIANT_PROPERTY ( expression , property )

参数

expression

类型为 sql_variant 的表达式。

property

包含将为其提供信息的 sql_variant 属性的名称。property 的数据类型为 varchar(128),可以是下列值之一。

说明 返回的 sql_variant 基本类型

BaseType

SQL Server 数据类型,例如:

bigint

binary

char

date

datetime

datetime2

datetimeoffset

decimal

float

int

money

nchar

numeric

nvarchar

real

smalldatetime

smallint

smallmoney

time

tinyint

uniqueidentifier

varbinary

varchar

sysname

NULL = 输入无效。

Precision

数值基本数据类型的位数:

datetime = 23

smalldatetime = 16

float = 53

real = 24

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 (p,s) 和 numeric (p,s) = s

moneysmallmoney = 4

datetime = 3

所有其他类型 = 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

示例

以下示例检索有关 colA  的 SQL_VARIANT_PROPERTY 信息。

 

CREATE   TABLE tableA(colA sql_variant, colB int)

INSERT INTO tableA VALUES ( cast (46279.1 as decimal(8,2)), 1689)

INSERT INTO tableA VALUES ( 'abcde' ,1700 )

INSERT INTO tableA VALUES ( $5.88 ,1700 )

 

SELECT   SQL_VARIANT_PROPERTY(colA,'BaseType') AS 'Base Type',

         SQL_VARIANT_PROPERTY(colA,'Precision') AS 'Precision',

         SQL_VARIANT_PROPERTY(colA,'Scale') AS 'Scale',

         SQL_VARIANT_PROPERTY(colA,'MaxLength') AS 'MaxLength'

FROM   tableA

下面是结果集:请注意,这三个值中的每一个都是 sql_variant 

/*

Base Type  Precision  Scale  MaxLength

decimal       8          2      5

varchar       0          0      8000

money      19         4      8

*/

 

DROP TABLE tableA