varchar(max)字段的updatetext等价物是什么?

时间:2017-07-27 14:37:03

标签: sql-server text sql-server-2012 varchar clob

我已将updatetext命令用于文本(clob)字段。 什么是最适合varchar(max)字段的东西?

2 个答案:

答案 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字段的唯一方法。

相关问题