在sqlserver中如何对text类型的数据进行replace操作。

liangzhg 2003-09-08 04:57:50
我要对text或者ntext的字段中的某个数据进行替换如“数据一”替换成“数据二”,类似与replace的功能,请问这个功能在sqlserver2000中如何实现。
...全文
709 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangzhg 2003-09-16
  • 打赏
  • 举报
回复
谢谢楼上的提醒,还有什么好的方法,请大家提示一下。
happydreamer 2003-09-15
  • 打赏
  • 举报
回复

注意不能使用READTEXT,UPDATETEXT,WRITETEXT对表中text列进行全部读写或重写,因为TEXTPTR只返回一行文本指针
比如

create table test ( id int, col text)
go

insert into test select 1,'I am at home'
union all select 2,'He is outside'
union all select 3,'The movie is so interesting'

--想在所有col后加上'add'
按照以下操作 只能对最后一列更新

DECLARE @ptr binary(16)
SELECT @ptr = TEXTPTR(col) FROM test
--指针只指向最后一行

UPDATETEXT test.col @ptr null null 'add'

select * from test
--------------------
1 I am at home
2 He is outside
3 The movie is so interestingadd --notice
liangzhg 2003-09-15
  • 打赏
  • 举报
回复
谢谢楼上的,回去看看试一下。
zjcxc 元老 2003-09-14
  • 打赏
  • 举报
回复
/*--text字段的替换处理
--*/
--创建数据测试环境
create table #tb(aa text)
insert into #tb
select 'abc123abc123,asd'

--定义替换的字符串
declare @s_str varchar(8000),@d_str varchar(8000)
select @s_str='123' --要替换的字符串
,@d_str='000' --替换成的字符串

--字符串替换处理
declare @p varbinary(16),@postion int,@rplen int
select @p=textptr(aa),@rplen=len(@s_str),@postion=charindex(@s_str,aa)-1 from #tb
while @postion>0
begin
updatetext #tb.aa @p @postion @rplen @d_str
select @postion=charindex(@s_str,aa)-1 from #tb
end

--显示结果
select * from #tb

--删除数据测试环境
drop table #tb
zjcxc 元老 2003-09-14
  • 打赏
  • 举报
回复
加上循环处理就行了.
liangzhg 2003-09-14
  • 打赏
  • 举报
回复
自己up
yoki 2003-09-10
  • 打赏
  • 举报
回复
DECLARE @ptrval binary(16)
SELECT @ptrval = TEXTPTR(某字段)
FROM t1
WHERE 某字段='数据1'

UPDATETEXT t1.某字段 @ptrval 0 null '数据2'
yoki 2003-09-10
  • 打赏
  • 举报
回复
DECLARE @ptrval binary(16)
SELECT @ptrval = TEXTPTR(某字段)
FROM t1
WHERE 某字段='数据1'

UPDATETEXT t1.某字段 @ptrval 0 null '数据2'
yoki 2003-09-10
  • 打赏
  • 举报
回复
DECLARE @ptrval binary(16)
SELECT @ptrval = TEXTPTR(某字段)
FROM t1
WHERE 某字段='数据1'

UPDATETEXT t1.某字段 @ptrval 0 0 '数据2'
liangzhg 2003-09-10
  • 打赏
  • 举报
回复
up
liangzhg 2003-09-10
  • 打赏
  • 举报
回复
楼上的这样只能将所有的数据替换,我想要的是将字段中的某个单词替换如“i am ”我只想将“am” 替换成"is","am"可能出现多次 。
liangzhg 2003-09-09
  • 打赏
  • 举报
回复
各位帮帮忙。
handsomeduke 2003-09-08
  • 打赏
  • 举报
回复
不会,关注一下!
liangzhg 2003-09-08
  • 打赏
  • 举报
回复
问题是我的字段很多都超过了1万个字符。
eastpond 2003-09-08
  • 打赏
  • 举报
回复
gz
ifengfeng 2003-09-08
  • 打赏
  • 举报
回复
是种办法,以前用过转换,但是数据超过8000时就不成了,继续关注。
gmc007 2003-09-08
  • 打赏
  • 举报
回复
create table test(txt text)

insert into test values('aaabbb')

select * from test

select replace(cast(txt as nvarchar), 'bbb', 'ddd') from test
ccnh 2003-09-08
  • 打赏
  • 举报
回复
看TEXT中内容的长度,先转换为 VARCHAR,最多可到8000,一般应该都足够了。 对于VARCHAR,就可以使用REPLACE了。 至于REPLACE函数的用户,看看帮助就知道了。
goodboycwy 2003-09-08
  • 打赏
  • 举报
回复
up
ifengfeng 2003-09-08
  • 打赏
  • 举报
回复
关注,UP

34,593

社区成员

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

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