Transact-SQL 参考

sql_variant

一种存储 SQL Server 支持的各种数据类型(textntextimage、timestampsql_variant 除外)值的数据类型。

sql_variant 可以用在列、参数和变量中并返回用户定义函数的值。sql_variant 允许这些数据库对象支持其它数据类型的值。

语法

sql_variant

注释

sql_variant 类型的列可以包含不同数据类型的行。例如,定义为 sql_variant 的列可以存储 intbinarychar 值。不能使用 sql_variant 存储的值类型只有 textntextimagetimestamp sql_variant

sql_variant 的最大长度可达 8016 字节。

必须先将 sql_variant 数据类型投影为其基本数据类型值,才能使其参与加和减这类运算。

可以给 sql_variant 赋一个默认值。该数据类型还可以将 NULL 作为其基础值,但是 NULL 值没有关联的基本类型。另外,sql_variant 还可以不将其它 sql_variant 作为其基本类型。

UNIQUE、主键或外键可以包含 sql_variant 类型列,但是包含给定行键的数据值总长度不应大于索引的最大长度(目前是 900 字节)。

表可以有任意多个 sql_variant 列。

sql_variant 不能在 CONTAINSTABLE 和 FREETEXTTABLE 中使用。

ODBC 不完全支持 sql_variant。因此,当使用用于 ODBC 的 Microsoft OLE DB 提供程序 (MSDASQL) 时,sql_variant 列的查询作为二进制数据返回。例如,包含字符串数据 'PS2091' 的 sql_variant 列作为 0x505332303931 返回。

比较 sql_variant 值

sql_variant 数据类型属于用于转换的数据类型层次结构列表的顶部。为了比较 sql_variant 值,SQL Server 数据类型层次结构顺序划分为数据类型系列。

数据类型层次结构 数据类型系列
sql_variant sql_variant
datetime datetime
smalldatetime datetime
float 近似数
real 近似数
decimal 精确数
money 精确数
smallmoney 精确数
bigint 精确数
int 精确数
smallint 精确数
tinyint 精确数
bit 精确数
nvarchar Unicode
nchar Unicode
varchar Unicode
char Unicode
varbinary binary
binary binary
uniqueidentifier uniqueidentifier

适用于 sql_variant 比较的规则如下:

请参见

CAST 和 CONVERT

使用 sql_variant 数据