sqlserver2005 TSql新功能学习总结(数据类型篇)

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。

(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐