特殊數據類型是指那些不適合其它數據類型分類的數據類型。例如,若要將客戶調查中"是"或"否"的值相應地用 1 或 0 進行存儲,則可使用 bit 數據類型。Microsoft® SQL Server™ 2000 在該分類中有幾個數據類型:
bit
bit 數據不必放在單引號中。它是與 SQL Server 的整型和數字數據相似的數字數據,但 bit 列只能存儲 0 和 1。
sql_variant
SQL Server 中的 sql_variant 數據類型允許單個列、參數或變量存儲不同數據類型的數據值。sql_variant 列的每個實例都記錄數據值和描述該值的元數據:該值的基本數據類型、最大大小、小數位數、精度和排序規則。
下例中的第二個表包含一個 sql_variant 列:
CREATE TABLE ObjectTable
(ObjectID int
CONSTRAINT PKObjectTable PRIMARY KEY,
ObjectName nvarchar(80),
ObjectWeight decimal(10,3),
ObjectColor nvarchar(20)
)
CREATE TABLE VariablePropertyTable
(ObjectID int REFERENCES ObjectTable(ObjectID),
PropertyName nvarchar(100),
PropertyValue sql_variant,
CONSTRAINT PKVariablePropertyTable
PRIMARY KEY(ObjectID, PropertyName)
)
若要獲得任何一個特定 sql_variant 實例的元數據信息,請使用 SQL_VARIANT_PROPERTY 函數。
table
table 數據類型類似是一個臨時表,可以用於存儲一個結果集以便以後處理。這種數據類型只能用於定義 table 類型的局部變量和用戶定義函數的返回值。
一個 table 變量或返回值的定義包括列、數據類型、精度、每列的小數位數以及可選的 PRIMARY KEY、UNIQUE 和CHECK 約束。
存儲在 table 變量中或用戶定義函數返回值中的行的格式,必須在聲明變量或創建函數時定義。其語法基於 CREATE
TABLE 的語法。例如:
DECLARE @TableVar TABLE
(Cola int PRIMARY KEY,
Colb char(3))
INSERT INTO @TableVar VALUES (1, 'abc')
INSERT INTO @TableVar VALUES (2, 'def')
SELECT * FROM @TableVar
GO
返回一個 table 的 table 變量和用戶定義函數只能用於某些 SELECT 和 INSERT 語句,而且其中 UPDATE、DELETE 和
DECLARE CURSOR 語句支持表。返回 table 的 table 變量和用戶定義函數不能用於任何其它 Transact-SQL 語句。
在該表中使用的索引或其它約束必須被定義為 DECLARE variable 或 CREATE FUNCTION 語句的一部分。不得過後再使用它
們,因為 CREATE INDEX 或 ALTER TABLE 語句不能引用表變量和用戶定義的函數。