sql server2005新增加了2大數據類型:
1.大值數據類型
2.xml
1.大值數據類型
Microsoft SQL Server 2005 中引入了 max 說明符。此說明符增強了 varchar、nvarchar 和 varbinary 數據類型的存儲能力。varchar(max)、nvarchar(max) 和 varbinary(max) 統稱為大值數據類型。您可以使用大值數據類型來存儲最大為 2^31-1 個字節的數據。
大值數據類型和 SQL Server 早期版本中與之對應的數據類型之間的關系:
varchar(max) text
nvarchar(max) ntext
varbinary(max) image
重要提示:
在 Microsoft SQL Server 以後的版本中,將刪除 ntext、text 和 image 數據類型。請避免在新開發工作中使用這些數據類型,並考慮修改當前使用這些數據類型的應用程序。請改用 nvarchar(max)、varchar(max) 和 varbinary(max)。
更新大值數據類型
UPDATE 語句支持 .WRITE( ) 子句對基礎大值數據列進行部分更新。這類似於 SQL Server 早期版本中所支持的對 text、ntext、image 數據類型的文本指針操作、WRITETEXT 和 UPDATETEX。
使用 .WRITE (expression, @Offset, @Length) 子句執行對 varchar(max)、nvarchar(max) 和 varbinary(max) 等數據類型的部分或完整更新。
若要針對其他字符或二進制數據類型獲得相同的 .WRITE 功能,可以使用 STUFF等字符函數
注意事項:
0.@Offset 是基於零的序號位置.
1.不能使用 .WRITE 子句更新 NULL 列或將 column_name 的值設置為 NULL。
注意事項:
0.@Offset 是基於零的序號位置.
1 .不能使用 .WRITE 子句更新 NULL 列或將 column_name 的值設置為 NULL。
代碼如下:
create table test1( ids int, DocumentSummary nvarchar(max))
go
select * from test1
go
insert into test1
select 1,null
go
select * from test1
go
--錯誤不能使用.WRITE 子句更新NULL 列
update test1
set DocumentSummary.WRITE(N'abcdefg',0,NULL)
--正確的
update test1
set DocumentSummary=N'abcdefg'
select * from test1
go
2.如果將 expression 設置為 NULL,則忽略 @Length,並將 column_name 中的值按指定的 @Offset 截斷。
代碼如下:
--把efg截斷,得到abcd
update test1
set DocumentSummary.WRITE(Null , 4 ,0)
select * from test1
go
3.如果 @Offset 為 NULL,則更新操作將在現有 column_name 值的結尾追加 expression,並忽略 @Length。
代碼如下:
-- 在結尾追加hi,得到abcdefghi
update test1
set DocumentSummary.WRITE('hi' , null ,0)
select * from test1
go
4.如果 @Length 為 NULL,則更新操作將刪除從 @Offset 到 column_name 值的結尾的所有數據。
代碼如下:
-- 得到ahi
update test1
set DocumentSummary.WRITE('hi' , 1 ,null)
select * from test1
go
.xml
存儲的 xml 數據類型表示實例大小不能超過 2 GB。