SQL字段内容批处理问题?在线等!马上给分!谢谢大家啦!

sdsnow 2007-08-13 09:05:45
现在需要对数据库某个字段的内容进行批处理修改:
就是flag数据库中的addre字段里面含有
http://10.10.0.1/***/****.exe等等的内容修改为:http://10.21.3.1/***/****.exe.
只修改IP地址其他不变,不知道应该如何写SQL语句请大家帮忙!
多谢!
...全文
158 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
paoluo 2007-08-13
  • 打赏
  • 举报
回复
zwss0717() ( ) 信誉:100 2007-08-13 10:12:39 得分: 0


nvarchar字段可以用。


----------
updatetext是針對text等類型的。


更新現有的 text、ntext、或 image 欄位。
zwss0717 2007-08-13
  • 打赏
  • 举报
回复
nvarchar字段可以用。
paoluo 2007-08-13
  • 打赏
  • 举报
回复
zwss0717() ( ) 信誉:100 2007-8-13 9:39:34 得分: 0



楼主的链接地址就是text字段

---------

這個。。。?怎麼看出來的?
sdsnow 2007-08-13
  • 打赏
  • 举报
回复
好了谢谢大家,马上发分!
paoluo 2007-08-13
  • 打赏
  • 举报
回复
sdsnow(snow) ( ) 信誉:100 2007-08-13 09:31:47 得分: 0


我想能不能家一个判断,就是如果字段不为空的话就替换,如果为空就不作修改。

-------------------------
Update flag Set addre = Replace(addre, 'http://10.10.0.1/', 'http://10.21.3.1/')
Where IsNull(addre, '') != ''
sdsnow 2007-08-13
  • 打赏
  • 举报
回复
我的连接地址字段类型是nvarchar
zwss0717 2007-08-13
  • 打赏
  • 举报
回复
楼主的链接地址就是text字段
sdsnow 2007-08-13
  • 打赏
  • 举报
回复
nvarchar类型的
sdsnow 2007-08-13
  • 打赏
  • 举报
回复
我想能不能家一个判断,就是如果字段不为空的话就替换,如果为空就不作修改。
paoluo 2007-08-13
  • 打赏
  • 举报
回复
zwss0717(), 你這裡是針對text類型使用游標寫的,這裡,如果樓主的數據類型不是text,不需要使用游標這麼麻煩。
zwss0717 2007-08-13
  • 打赏
  • 举报
回复
declare @s_str varchar(8000),@d_str varchar(8000)
select @s_str='http://10.10.0.1/' --要替换的字符串
,@d_str='http://10.21.3.1/' --替换成的字符串
declare @id int
declare #rpc cursor for select AnnounceID from dv_bbs1
open #rpc
fetch next from #rpc into @id
while @@fetch_status=0
begin
declare @p varbinary(16),@postion int,@rplen int
select @p=textptr(body)
,@rplen=len(@s_str)
,@postion=charindex(@s_str,body)-1
from dv_bbs1 where AnnounceID=@id
while @postion>0
begin
updatetext dv_bbs1.body @p @postion @rplen @d_str
select @postion=charindex(@s_str,body)-1 from dv_bbs1 where AnnounceID=@id end
fetch next from #rpc into @id
end
close #rpc
deallocate #rpc
paoluo 2007-08-13
  • 打赏
  • 举报
回复
--創建測試環境
Create Table flag(addre Varchar(1000))
--插入數據
Insert flag Select ''
Union All Select Null
Union All Select 'http://10.10.0.1/***/****.exe'
Union All Select 'http://10.10.0.2/***/****.exe'
GO
--測試
Update flag Set addre = Replace(addre, 'http://10.10.0.1/', 'http://10.21.3.1/')

Select * From flag
GO
--刪除測試環境
Drop Table flag
--結果
/*
addre

NULL
http://10.21.3.1/***/****.exe
http://10.10.0.2/***/****.exe
*/
paoluo 2007-08-13
  • 打赏
  • 举报
回复
sdsnow(snow) ( ) 信誉:100 2007-08-13 09:18:17 得分: 0


我测试了一下,原来内内容为空的字段也变成有内容的了,这是怎么回事啊?请教大家


------------
不可能的。

你用的是上面的語句嗎?
sdsnow 2007-08-13
  • 打赏
  • 举报
回复
我测试了一下,原来内内容为空的字段也变成有内容的了,这是怎么回事啊?请教大家
dawugui 2007-08-13
  • 打赏
  • 举报
回复
现在需要对数据库某个字段的内容进行批处理修改:
就是flag数据库中的addre字段里面含有
http://10.10.0.1/***/****.exe等等的内容修改为:http://10.21.3.1/***/****.exe.

update flag set addre = replace(addre , 'http://10.10.0.1' , 'http://10.21.3.1')
paoluo 2007-08-13
  • 打赏
  • 举报
回复
--這麼改,更保險點
Update flag Set addre = Replace(addre, 'http://10.10.0.1/', 'http://10.21.3.1/')
paoluo 2007-08-13
  • 打赏
  • 举报
回复
Update flag Set addre = Replace(addre, '10.10.0.1/', '10.21.3.1/')

34,587

社区成员

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

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