我已将updatetext
命令用于文本(clob)字段。
什么是最适合varchar(max)
字段的东西?
答案 0 :(得分:3)
您应该使用UPDATE子句的新.WRITE
部分。请参阅under "Updating Large Value Data Types" in the documentation。
然而:
“。如果数据库恢复模型设置为批量记录或简单,则插入或追加新数据的WRITE更新记录最少。更新现有值时不使用最小日志记录。”
...所以如果您实际上正在替换数据,我认为您不会减少事务日志大小。
然而,根据Transaction Log documentation,这与旧的UPDATETEXT
方法完全相同。它们都被提及为可以最小化记录的操作,但无论如何,如果您更新现有数据,您将无法获得最少的日志记录:
- 在插入或附加新数据时,使用UPDATE语句中的.WRITE子句对大值数据类型进行部分更新。请注意,更新现有值时不使用最小日志记录。有关大值数据类型的详细信息,请参阅数据类型(Transact-SQL)。
在文本,ntext和图像数据类型列中插入或附加新数据时,- WRITETEXT和UPDATETEXT语句。请注意,更新现有值时不使用最小日志记录。
答案 1 :(得分:-1)
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字段的唯一方法。