SQL Server 2005 TSQL增强功能(一)

     SQL Server 2005 通过使用语法 (MAX) 引入 MAX 说明符,增强了变长数据类型 VARCHAR、NVARCHAR 和 VARBINARY 的能力。微软建议用VARCHAR(MAX)、NVARCHAR (MAX)和VARBINARY (MAX)数据类型取代text、ntext或image数据类型。

优点:

1:最多能保存2GB的数据

2:无须使用显式指针操作,因为 SQL Server 在内部确定何时以内联方式存储值以及何时使用指针。

3:能够对小型和大型数据使用统一的编程模型。带有 MAX 说明符的变长数据类型受到列、变量、参数、比较、触发器和所有字符串函数等的支持。

4:对于小于8K的数据, 相比text, ntext 和 image存取效率明显提高,可以使用.WRITE (expression, @Offset, @Length)进行更新。

      为了从带有 MAX 说明符的动态列中读取块,可以按照与常规动态列相同的方式使用 SUBSTRING 函数。为了更新块,可以使用 UPDATE 语句的增强语法,它现在提供了 WRITE 方法。增强的 UPDATE 语句的语法为:

UPDATE table_name
SET column_name.WRITE(@chunk, @offset, @len)
WHERE ...

WRITE 方法从 @offset 位置移除 @len 字符,并且在该位置插入 @chunk。请注意,@offset 是从零开始的,意味着偏移量 0 表示 @chunk 中的第一个字符的位置。

例子:

CREATE TABLE TestMax
    (
      ID INT NOT NULL
             PRIMARY KEY
             IDENTITY(1, 1) ,
      txt_data VARCHAR(MAX) NULL ,
      ntxt_data NVARCHAR(MAX) NULL ,
      binary_data VARBINARY(MAX) NULL
    )

INSERT  INTO dbo.TestMax
        ( txt_data, ntxt_data )
VALUES  ( 'txt no use', N'ntxt' )

SELECT  *
FROM    TestMax

-- 下面语句将no use 替换为adddata
-- txt_data 列的结果为txt adddata UPDATE dbo.TestMax SET txt_data.WRITE('adddata', 4, 6) WHERE ID = 1 --当 @chunk 为 NULL 时,@len 被忽略,并且值在 @offset 位置截断。 --以下语句移除了从偏移量 3 直到结尾的所有数据 --txt_data 列的结果为txt UPDATE dbo.TestMax SET txt_data.WRITE(NULL, 3, 0) WHERE ID = 1 --当 @len 为 NULL 时,从 @offset 到结尾的所有字符都被移除,并且 @chunk 被追加。 --以下语句移除了从偏移量 2 直到结尾的所有数据 --txt_data 列的结果为txappenddata UPDATE dbo.TestMax SET txt_data.WRITE('appenddata', 2, NULL) WHERE ID = 1 --当 @offset 为 NULL 时,@len 被忽略,并且在结尾追加了 @chunk。 --以下语句在结尾追加了字符串'hello' --txt_data 列的结果为txappenddatahello UPDATE dbo.TestMax SET txt_data.WRITE('hello',NULL,NULL) WHERE ID = 1
原文地址:https://www.cnblogs.com/supperwu/p/2514669.html