SQL Server 2005:請(qǐng)使用 varchar(max)、nvarchar(max) 和 varbinary(max) 數(shù)據(jù)類型,而不要使用 text、ntext 和 image 數(shù)據(jù)類型。?
Microsoft SQL Server 2005 中引入了 max 說(shuō)明符。此說(shuō)明符增強(qiáng)了 varchar、nvarchar 和 varbinary 數(shù)據(jù)類型的存儲(chǔ)能力。varchar(max)、nvarchar(max) 和 varbinary(max) 統(tǒng)稱為大值數(shù)據(jù)類型。您可以使用大值數(shù)據(jù)類型來(lái)存儲(chǔ)最大為 2^31-1 個(gè)字節(jié)的數(shù)據(jù)。
注意: |
| 當(dāng) sp_tableoption 存儲(chǔ)過(guò)程的 'large value types out of row' 選項(xiàng)設(shè)置為 OFF 時(shí),大值類型的行內(nèi)存儲(chǔ)限制為 8000 個(gè)字節(jié)。當(dāng)此選項(xiàng)設(shè)置為 ON 時(shí),只在行內(nèi)存儲(chǔ) 16 字節(jié)的根。有關(guān)詳細(xì)信息,請(qǐng)參閱 sp_tableoption (Transact-SQL)。 |
大值數(shù)據(jù)類型在行為上和與之對(duì)應(yīng)的較小的數(shù)據(jù)類型 varchar、nvarchar 和 varbinary 相似。這種相似使 SQL Server 能夠更高效地存儲(chǔ)和檢索大型字符、Unicode 和二進(jìn)制數(shù)據(jù)。
有了大值數(shù)據(jù)類型,使用 SQL Server 的方式是使用早期版本的 SQL Server 中的 text、ntext 和 image 數(shù)據(jù)類型所不可能具有的。例如,在 SQL Server 2005 中,您可以定義能存儲(chǔ)大量數(shù)據(jù)(最多可達(dá) 2^31 字節(jié)的字符、整數(shù)和 Unicode 數(shù)據(jù))的變量。有關(guān)詳細(xì)信息,請(qǐng)參閱 Transact-SQL 變量。
下表說(shuō)明了大值數(shù)據(jù)類型和 SQL Server 早期版本中與之對(duì)應(yīng)的數(shù)據(jù)類型之間的關(guān)系。
| 大值數(shù)據(jù)類型 |
早期版本中的 LOB |
|
varchar(max)
|
text×
|
|
nvarchar(max)
|
ntext×
|
|
varbinary(max)
|
image
|
× SQL Server 6.5 版本的客戶端不支持 ntext 數(shù)據(jù)類型,因此無(wú)法識(shí)別 nvarchar(max)。
重要提示: |
| 請(qǐng)使用 varchar(max)、nvarchar(max) 和 varbinary(max) 數(shù)據(jù)類型,而不要使用 text、ntext 和 image 數(shù)據(jù)類型。 |
大值數(shù)據(jù)類型在行為上和與之對(duì)應(yīng)的較小的數(shù)據(jù)類型 varchar(n)、nvarchar(n) 和 varbinary(n) 相同。下面介紹大值數(shù)據(jù)類型在某些特定情形下的使用:
- 游標(biāo)
由于可以定義大值數(shù)據(jù)類型變量,便可以將 FETCH 返回的大值數(shù)據(jù)類型列中的數(shù)據(jù)賦給本地變量。有關(guān)詳細(xì)信息,請(qǐng)參閱 FETCH (Transact-SQL)。
使用大值數(shù)據(jù)類型不影響游標(biāo)的強(qiáng)制實(shí)施游標(biāo)類型轉(zhuǎn)換用法。
- 成塊更新
UPDATE 語(yǔ)句現(xiàn)在支持 .WRITE( ) 子句對(duì)基礎(chǔ)大值數(shù)據(jù)列進(jìn)行部分更新。這類似于 SQL Server 早期版本中所支持的對(duì)text、ntext、image 數(shù)據(jù)類型的文本指針操作、WRITETEXT 和 UPDATETEX。有關(guān)詳細(xì)信息,請(qǐng)參閱 UPDATE (Transact-SQL)。
- 觸發(fā)器
支持對(duì)插入的和刪除的表中的大值數(shù)據(jù)類型列引用上使用 AFTER 觸發(fā)器。有關(guān)詳細(xì)信息,請(qǐng)參閱 CREATE TRIGGER (Transact-SQL)。
- 字符串函數(shù)
內(nèi)置的可操作字符和二進(jìn)制數(shù)據(jù)的字符串函數(shù)有所增強(qiáng),可支持大值數(shù)據(jù)類型的參數(shù)。這些函數(shù)包括:
- COL_LENGTH
- CHARINDEX
- PATINDEX
- LEN
- DATALENGTH
- SUBSTRING