Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何有条件地更新SQL中的text/ntext字段?_Sql_Sql Server_Tsql_Sql Update - Fatal编程技术网

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

如何有条件地更新SQL中的text/ntext字段?,sql,sql-server,tsql,sql-update,Sql,Sql Server,Tsql,Sql Update,在存储过程中,我试图有条件地更新字段(如下面SQL语句中的第2行) …但对于text/ntext字段。最有效的方法是什么?它必须是一个单独的UPDATETEXT语句吗?我是否必须先执行一个额外的选择?上述示例将在SQL Server 2005中工作,其中val是一个文本字段,您正在更新整个值。如果只替换字段的一部分,则在单独的语句中使用UPDATETEXT 如果可以更新模式,更好的解决方案是使用VARCHAR(MAX)或NVARCHAR(MAX)列。UPDATETEXT命令已在SQL Serve

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


…但对于text/ntext字段。最有效的方法是什么?它必须是一个单独的
UPDATETEXT
语句吗?我是否必须先执行一个额外的
选择

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


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

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


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

也许该示例不现实,但您能否将其简化为:

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

案例的前半部分只是将字段设置为自身,这似乎有点毫无意义。

也许这个示例不现实,但您不能将其简化为:

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

案例的前半部分只是将字段设置为自身,这似乎毫无意义。

@John,这实际上只是更大查询的一部分。其他一些字段也需要根据其他一些字段进行有条件的更新,因此,除非拆分更新,否则我不能将其作为WHERE子句进行更新。@John,这实际上只是更大查询的一部分。一些其他字段也需要根据一些其他字段进行有条件的更新,因此,除非拆分更新,否则我不能将其作为WHERE子句。我需要将文本附加到文本字段的末尾。解决方案必须在MS SQL 2000-2008上运行。因此,无法转换为VARCHAR(MAX)/NVARCHAR(MAX)。我需要在文本字段的末尾追加文本。解决方案必须在MS SQL 2000-2008上运行。因此,无法转换为VARCHAR(MAX)/NVARCHAR(MAX)。