text类型字段修改

wahva 2006-09-06 06:20:56
数据表user中有detail字段,保留detail字段内容并追加"2006",怎么追加?

...全文
223 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
baggio785 2007-02-09
  • 打赏
  • 举报
回复
看错了,上面写的是更新的

如果是结尾处追加

起始位置
select datalength(字段名)/2 from 表名

结束位置写成0就可以了
baggio785 2007-02-09
  • 打赏
  • 举报
回复
declare @ptrval binary(16)
select @ptrval = textptr(字段名) from 表名 where条件
update 表名.字段名 @ptrval 起始位置 结束位置 替换的字符

计算起始位置
select patindex('%字符串%',字段名) from 表名

计算结束位置
select len('字符串')
cloudtarget 2007-02-08
  • 打赏
  • 举报
回复
--测试数据
CREATE TABLE tb(col ntext)
-- 插入
INSERT tb VALUES(REPLICATE( '0001,000,',1))
--查看
select * from tb
--结果
/*
0001,000,
*/
-- 追加数据
DECLARE @p binary(16)
SELECT @p=TEXTPTR(col) FROM tb
UPDATETEXT tb.col @p NULL 0 tb.col @p--值为 NULL 则将新数据追加到现有数据值中。
--值为 0 表示不删除数据。
--查看
select * from tb
--结果
/*
0001,000,0001,000,
*/

--重新写内容
WRITETEXT tb.col @p 'text内容'
--查看
select * from tb
--结果
/*
text内容
*/

--追加数据
DECLARE @s VARCHAR(800)
set @s='追加......!'
UPDATETEXT tb.col @p null 0 @s
--查看
select * from tb
--结果
/*
text内容追加......!
*/

--删除测试表
drop table tb

cloudtarget 2007-02-08
  • 打赏
  • 举报
回复
updatetext就可以了
wahva 2006-09-06
  • 打赏
  • 举报
回复
lxzm1001,这个字段的值部分超过了8000字符
lxzm1001 2006-09-06
  • 打赏
  • 举报
回复
不好意思,会说,却把cast(detail as varchar(8000))漏掉了
csdnweii 2006-09-06
  • 打赏
  • 举报
回复
update user set detail=cast(detail as varchar(8000))+'2006'
lxzm1001 2006-09-06
  • 打赏
  • 举报
回复
如果没超过8000字符?
update user set detail=detail+'2006'

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧