如何使用UPDATETEXT更新SQL Server中TEXT类型的列
解决UPDATETEXT更新TEXT列的语法错误问题
错误原因
你用的UPDATETEXT语法完全错误,UPDATETEXT是SQL Server针对TEXT/NTEXT/IMAGE类型的专用旧语法,不支持普通UPDATE的SET子句结构,这就是报错"Incorrect syntax near the keyword 'SET'"的核心原因。
正确的UPDATETEXT用法
UPDATETEXT需要依赖文本指针(TEXTPTR)定位要更新的TEXT列内容,语法结构如下:
UPDATETEXT { table_name.dest_column_name dest_text_ptr } { NULL | insert_offset } { NULL | delete_length } [ WITH LOG ] inserted_data
针对你的场景,正确代码示例:
-- 先获取目标行TEXT列的文本指针 DECLARE @textPtr varbinary(16); SELECT @textPtr = TEXTPTR(ColumnName) FROM db.tablename WHERE UserID = 'myID'; -- 替换整个TEXT列内容(insert_offset=0表示从开头插入,delete_length=NULL表示删除原有全部内容) UPDATETEXT db.tablename.ColumnName @textPtr 0 NULL 'data';
更推荐的替代方案
TEXT类型在SQL Server 2005及以后版本已被官方弃用,建议将列类型修改为VARCHAR(MAX)(对应原TEXT类型)或NVARCHAR(MAX)(对应原NTEXT类型),这类大字符串类型可以直接用你熟悉的普通UPDATE语句,和操作NVARCHAR列完全一致:
UPDATE db.tablename SET ColumnName = 'data' WHERE UserID = 'myID';
内容的提问来源于stack exchange,提问作者Inga
相关产品推荐
相关产品推荐

