代码之家  ›  专栏  ›  技术社区  ›  Fung

如何有条件地更新SQL中的text/ntext字段?

  •  0
  • Fung  · 技术社区  · 17 年前

    在一个存储过程中,我试图有条件地更新一个字段(如下面SQL语句中的第2行)

    UPDATE [some_stuff] SET
      last_update = CASE WHEN val = @NewVal THEN last_update ELSE GETDATE() END,
      val = @NewVal
    

    …但对于text/ntext字段。最有效的方法是什么?必须是单独的吗 UPDATETEXT 陈述?我还要做额外的 SELECT

    2 回复  |  直到 14 年前
        1
  •  3
  •   Tom H zenazn    16 年前

    上面的示例将在SQL Server 2005中工作,其中val是一个文本字段,您正在更新整个值。如果只替换字段的一部分,则在单独的语句中使用UPDATETEXT。

    如果可以更新模式,一个更好的解决方案是使用VARCHAR(MAX)或NVARCHAR(MAX)列。UPDATETEXT命令已在SQL Server的未来版本中标记为不推荐使用。如果使用这些数据类型,则可以使用UPDATE语句中的column_name.WRITE替换部分值。

        2
  •  0
  •   JohnFx    17 年前

    也许这个例子不现实,但你能不能把它简单化为:

    UPDATE [some_stuff] 
    SET last_update =  GETDATE()
    WHERE val != @NewVal