varchar(max) 字段的更新文本等效项是什么?



我已经将updatetext命令用于文本(clob(字段。 什么最相似的东西适用于varchar(max)领域?

> 您应该使用 UPDATE 子句的新.WRITE部分。请参阅文档中的"更新大值数据类型"部分。

然而:

"。如果数据库恢复模式设置为大容量日志或简单,则插入或追加新数据的 WRITE 更新将最少记录。更新现有值时不使用最小日志记录。

。因此,如果您实际要替换数据,我认为您不会减少事务日志大小。

但是,根据事务日志文档,这与旧的UPDATETEXT方法完全相同。它们都被提及为可以最少记录的操作,但在这两种情况下,如果您更新现有数据,您都不会获得最少的日志记录:

  • 对大值数据类型进行部分更新,使用 .插入或追加新数据时 UPDATE 语句中的 WRITE 子句。请注意,更新现有值时不使用最小日志记录。有关大值数据类型的详细信息,请参阅数据类型 (事务处理 SQL(。
  • 在文本、ntext 和图像数据类型列中插入或追加新数据时的 WRITETEXT 和 UPDATETEXT 语句。请注意,更新现有值时不使用最小日志记录。

你喜欢这样的东西吗?

create table #t (f varchar(max) ) 
insert into #t values ('Xeiou')
insert into #t values ('Xbcdefghijlmnopq')
insert into #t values ('X')
update #t
set f = 'A' + SUBSTRING(f,2,len(f)-1)
where f is not null
select * from #t
drop table #t

f
----------------------
Aeiou
Abcdefghijlmnopq
A

我认为这是部分更新 varchar 字段的唯一方法。

最新更新