SQL2005 & SQL2008追加了大型对象数据类型: varchar(max), nvarchar(max), varbinary(max)
如果想修改这类值中的一部分数据,可以使用STUFF的字符串函数,但效率太低。
为了快速的变更数据,建议使用Update的WRITE方法:
WRITE(@expression,@offset,@length)
注意1:1)@expression参数替换目标值中从@offset位置开始的@Length个单位(字符、字节)的字符。
2)@offset从0开始。
例如: UPDATE TestSample.CustomerData
SET txt_data.WRITE('This is update data', 9, 3)
WHERE custid = 100;
各个参数的特殊含义:
(1)如果@expression=NULL, @length将被忽略,@offset以后的值被截断。
例如: UPDATE TestSample.CustomerData
SET txt_data.WRITE(NULL, 10, 0) --截断第10个字符以后的字符
WHERE custid = 100;
(2)如果@length=NULL, @offset后的字符串被截掉,@expression被添加到字符串末尾。
例如:UPDATE TestSample.CustomerData
SET txt_data.WRITE('123', 10, NULL) --从第10位截断字符串,在末尾添加"123"
WHERE custid = 100;
(3)如果@offset=NULL & @length=0,则直接把@expression添加到字符串mowei
例如:UPDATE TestSample.CurstomerData
SET txt_data.WRITE('end', NULL, 0) --字符串末尾添加“end”
WHERE custid = 100;
(4)如果@express='',不添加任何数据,只是移除从@offset开始的长度为@length的字符串。
例如:UPDATE TestSample.CustomerData
SET txt_data.WRITE('', 10, 5) --从第10位移除4个字符
WHERE custid = 100;
注意2:如果目标LOB为NULL,使用WRITE方法更新将失败。 |
|