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。

Code
1
create table test1( ids int, DocumentSummary nvarchar(max))
2
go
3
select * from test1
4
go
5
insert into test1
6
select 1,null
7
go
8
select * from test1
9
go
10
--错误不能使用.WRITE 子句更新NULL 列
11
update test1
12
set DocumentSummary.WRITE(N'abcdefg',0,NULL)
13
14
--正确的
15
update test1
16
set DocumentSummary=N'abcdefg'
17
select * from test1
18
go
19
2.如果将 expression 设置为 NULL,则忽略 @Length,并将 column_name 中的值按指定的 @Offset 截断。

Code
1
--把efg截断,得到abcd
2
update test1
3
set DocumentSummary.WRITE(Null , 4 ,0)
4
select * from test1
5
go
6
3.如果 @Offset 为 NULL,则更新操作将在现有 column_name 值的结尾追加 expression,并忽略 @Length。

Code
1
-- 在结尾追加hi,得到abcdefghi
2
update test1
3
set DocumentSummary.WRITE('hi' , null ,0)
4
select * from test1
5
go
6
7
4.如果 @Length 为 NULL,则更新操作将删除从 @Offset 到 column_name 值的结尾的所有数据。

Code
1
-- 得到ahi
2
update test1
3
set DocumentSummary.WRITE('hi' , 1 ,null)
4
select * from test1
5
go
6
2.xml
存储的 xml 数据类型表示实例大小不能超过 2 GB。

Code
1
USE AdventureWorks;
2
GO
3
DECLARE @y xml (Sales.IndividualSurveySchemaCollection)
4
SET @y = (SELECT TOP 1 Demographics FROM Sales.Individual);
5
SELECT @y;
6
GO
7
8
9
CREATE TABLE T(c1 int primary key, c2 xml)
10
go
11
DECLARE @s varchar(100)
12
SET @s = '<Cust><Fname>Andrew</Fname><Lname>Fuller</Lname></Cust>'
13
INSERT INTO T VALUES (3, @s)
14
15
/**//*得到:
16
<Cust>
17
<Fname>Andrew</Fname>
18
<Lname>Fuller</Lname>
19
</Cust>
20
*/
21
select * from t
22
希望上面提到的知识对你有所提示
当然欢迎交流和指正
blog:
http://aierong.cnblogs.com/
author:aierong
email:aierong@126.com