一种存储 SQL Server 支持的各种数据类型(text、ntext、image、timestamp 和 sql_variant 除外)值的数据类型。
sql_variant 可以用在列、参数和变量中并返回用户定义函数的值。sql_variant 允许这些数据库对象支持其它数据类型的值。
sql_variant
sql_variant 类型的列可以包含不同数据类型的行。例如,定义为 sql_variant 的列可以存储 int、binary 和 char 值。不能使用 sql_variant 存储的值类型只有 text、ntext、image、timestamp 和 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 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 比较的规则如下: