ntext类型字段中的字符串全表替换(在线等待!)
数据库数据表 TB 有字段 Content
我想把TB中字段Content中的所有字符串'http://192.168.1.110/'替换成'web'
例如
http://192.168.1.110/掌骨额http://192.168.1.110/阳升的地方http://192.168.1.110/永点http://192.168.1.110/
转换后
web掌骨额web阳升的地方web永点web
注意:1、是全表替换
2、是ntext类型字段
3、要替换的字符串可能出现在字段的任何位置
4、请注明关键地方的注视
[解决办法]
LZ:你Content应该不止含有 http://192.168.1.110/ 这个吧
如果你只想更新含有http://192.168.1.110/ 这个的话,Try[注意:下面语句只能更新<8000字符内的Content]
Declare @T Table(id int,Content ntext)Insert @T Select 1,'http://192.168.1.110/掌骨额http://192.168.1.110/阳升的地方http://192.168.1.110/永点http://192.168.1.110/ 'Union All Select 2,'李四http://192.168.1.110/张三http://192.168.1.110/阳升的地方'--更新Update @T Set Content=Replace(Cast(Content As Varchar(8000)),'http://192.168.1.110/','web')--查询更新后的结果Select * From @T---结果/*id Content ----------- ---------------------------------1 web掌骨额web阳升的地方web永点web 2 李四web张三web阳升的地方(所影响的行数为 2 行)*/
[解决办法]
在sql2005下面不在建议使用TEXT\NTEXT\IMAGE数据类型,请使用NVARCHAR(MAX)代替
[解决办法]
DECLARE @insert_offset int,@delete_length intDECLARE @newstr varchar(50)set @delete_length = len('http://192.168.1.110/')set @newstr = 'web'select @insert_offset = patindex('%http://192.168.1.110/%',str)-1 from a where id=1DECLARE @ptrval binary(16)SELECT @ptrval = TEXTPTR(str) FROM a where id=1UPDATETEXT a.str @ptrval @insert_offset @delete_length @newstr
[解决办法]
用bcp将数据导出,用word替换,再用bcp导入