我已经将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 字段的唯一方法。