You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 21:18:32