一種存儲 SQL Server 支持的各種數(shù)據(jù)類型(text、ntext、image、timestamp 和 sql_variant 除外)值的數(shù)據(jù)類型。
sql_variant 可以用在列、參數(shù)和變量中并返回用戶定義函數(shù)的值。sql_variant 允許這些數(shù)據(jù)庫對象支持其它數(shù)據(jù)類型的值。
sql_variant
sql_variant 類型的列可以包含不同數(shù)據(jù)類型的行。例如,定義為 sql_variant 的列可以存儲 int、binary 和 char 值。不能使用 sql_variant 存儲的值類型只有 text、ntext、image、timestamp 和 sql_variant。
sql_variant 的最大長度可達(dá) 8016 字節(jié)。
必須先將 sql_variant 數(shù)據(jù)類型投影為其基本數(shù)據(jù)類型值,才能使其參與加和減這類運(yùn)算。
可以給 sql_variant 賦一個默認(rèn)值。該數(shù)據(jù)類型還可以將 NULL 作為其基礎(chǔ)值,但是 NULL 值沒有關(guān)聯(lián)的基本類型。另外,sql_variant 還可以不將其它 sql_variant 作為其基本類型。
UNIQUE、主鍵或外鍵可以包含 sql_variant 類型列,但是包含給定行鍵的數(shù)據(jù)值總長度不應(yīng)大于索引的最大長度(目前是 900 字節(jié))。
表可以有任意多個 sql_variant 列。
sql_variant 不能在 CONTAINSTABLE 和 FREETEXTTABLE 中使用。
ODBC 不完全支持 sql_variant。因此,當(dāng)使用用于 ODBC 的 Microsoft OLE DB 提供程序 (MSDASQL) 時(shí),sql_variant 列的查詢作為二進(jìn)制數(shù)據(jù)返回。例如,包含字符串?dāng)?shù)據(jù) 'PS2091' 的 sql_variant 列作為 0x505332303931 返回。
sql_variant 數(shù)據(jù)類型屬于用于轉(zhuǎn)換的數(shù)據(jù)類型層次結(jié)構(gòu)列表的頂部。為了比較 sql_variant 值,SQL Server 數(shù)據(jù)類型層次結(jié)構(gòu)順序劃分為數(shù)據(jù)類型系列。
數(shù)據(jù)類型層次結(jié)構(gòu) | 數(shù)據(jù)類型系列 |
sql_variant | sql_variant |
datetime | datetime |
smalldatetime | datetime |
float | 近似數(shù) |
real | 近似數(shù) |
decimal | 精確數(shù) |
money | 精確數(shù) |
smallmoney | 精確數(shù) |
bigint | 精確數(shù) |
int | 精確數(shù) |
smallint | 精確數(shù) |
tinyint | 精確數(shù) |
bit | 精確數(shù) |
nvarchar | Unicode |
nchar | Unicode |
varchar | Unicode |
char | Unicode |
varbinary | binary |
binary | binary |
uniqueidentifier | uniqueidentifier |
適用于 sql_variant 比較的規(guī)則如下: