sql截取字符串并替换?
有两个表dv_bbs1dv_bbs2现欲将两个表中字段Body里的字符串"/8872X/"替换为"/8872PL/"查询语句为select*fromdv_bbs1wher...
有两个表 dv_bbs1 dv_bbs2 现欲将两个表中字段Body里的字符串 "/8872X/"
替换为"/8872PL/"
查询语句为 select * from dv_bbs1 where Body like "?/8872x/?";
求截取字符串并将其替换的 sql语句
50分感谢 ! 检验可行之后 追加10分!
数据库是SQL2005
请看清楚 是截取 Body 字段中 的 字符串 "/8872X/" 并将其替换为"8872PL/"
update 语句只是将其更改 而并非替换
而且是将全部内容更改成"/8872pl/" (因为"/8872X/"的位置并不一定 所以需要一个函数) 其他内容就没了!!!
我知道是replace 和 subString 的函数调用 要求步骤啊
谢谢各位大大
郁闷了
Body数据类型是ntext类型 replace( )无效... 展开
替换为"/8872PL/"
查询语句为 select * from dv_bbs1 where Body like "?/8872x/?";
求截取字符串并将其替换的 sql语句
50分感谢 ! 检验可行之后 追加10分!
数据库是SQL2005
请看清楚 是截取 Body 字段中 的 字符串 "/8872X/" 并将其替换为"8872PL/"
update 语句只是将其更改 而并非替换
而且是将全部内容更改成"/8872pl/" (因为"/8872X/"的位置并不一定 所以需要一个函数) 其他内容就没了!!!
我知道是replace 和 subString 的函数调用 要求步骤啊
谢谢各位大大
郁闷了
Body数据类型是ntext类型 replace( )无效... 展开
10个回答
展开全部
前面的分隔符取%,后面的分隔符是什么?就是说,以什么为分截取的依据?
没消息了?只好乱猜一下
假设你后面的特征是“0-9”或左圆括号“(”,那么可以这样:
select
left(
substring(字段名,charindex('%',字段名)+1,len(字段名)) ,
patindex('%[0-9(]%',substring(字段名,charindex('%',字段名)+1,len(字段名) )+'0' )-1
)说明:
先按你的方法截取%后面的字串,
然后再从左侧开始,截取到含有数字或左圆扩号的字符前面一个字符。
考虑到如果后面没有数字或扩号的情况,后面预加了0字符,这样当后面没有要求的字符时,会取百分号后面的所有字符。
没消息了?只好乱猜一下
假设你后面的特征是“0-9”或左圆括号“(”,那么可以这样:
select
left(
substring(字段名,charindex('%',字段名)+1,len(字段名)) ,
patindex('%[0-9(]%',substring(字段名,charindex('%',字段名)+1,len(字段名) )+'0' )-1
)说明:
先按你的方法截取%后面的字串,
然后再从左侧开始,截取到含有数字或左圆扩号的字符前面一个字符。
考虑到如果后面没有数字或扩号的情况,后面预加了0字符,这样当后面没有要求的字符时,会取百分号后面的所有字符。
展开全部
查询语句为 select * from dv_bbs1 where Body like "?/8872x/?";
求截取字符串并将其替换的 sql语句
你这个字段是否有规律?比如/8872x/前台有固定的字符数量??
update dv_bbs1 set Body="/8872PL/"
where Body="/8872X/"
求截取字符串并将其替换的 sql语句
你这个字段是否有规律?比如/8872x/前台有固定的字符数量??
update dv_bbs1 set Body="/8872PL/"
where Body="/8872X/"
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
update dv_bbs1 set Body=replace(Body,'/8872X/','/8872PL/') where Body like '%/8872X/%'
这样不可以吗?
根本不用截取再替换啊?他自己找到这个字符串替换为一个字符串。我都执行N篇了.
SQL支持批量替换的。你想复杂了吧
这样不可以吗?
根本不用截取再替换啊?他自己找到这个字符串替换为一个字符串。我都执行N篇了.
SQL支持批量替换的。你想复杂了吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不需要subString只要replace就行了
update dv_bbs1 set body=replace(body,'/8872X/','8872PL/');
replace的用法:replace(f,str1,str2)
f字段用str1替换为str2
update dv_bbs1 set body=replace(body,'/8872X/','8872PL/');
replace的用法:replace(f,str1,str2)
f字段用str1替换为str2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
update dv_bbs1
set body= REPLACE(body,'/8872X/','/8872PL/')
把ntext转换为nvarchar, 然后再replace用下面的:
declare @t table (id int,body Ntext)
insert into @t
select 1,N'qqqqqqqqqqqqqqqqqqqqqqqq/8872X/' union
select 2,N'/8872X/wwwwwwwwwwwwwwwwwwwwwww' union
select 3,N'1/8872X/1'
select * from @t
update @t
set body= REPLACE(cast(body as nvarchar),'/8872X/','/8872PL/')
select * from @t
--结果---
(3 row(s) affected)
id body
----------- -----------------
1 qqqqqqqqqqqqqqqqqqqqqqqq/8872X/
2 /8872X/wwwwwwwwwwwwwwwwwwwwwww
3 1/8872X/1
(3 row(s) affected)
(3 row(s) affected)
id body
----------- -------------------
1 qqqqqqqqqqqqqqqqqqqqqqqq/8872X
2 /8872PL/wwwwwwwwwwwwwwwwwwwwwww
3 1/8872PL/1
(3 row(s) affected)
set body= REPLACE(body,'/8872X/','/8872PL/')
把ntext转换为nvarchar, 然后再replace用下面的:
declare @t table (id int,body Ntext)
insert into @t
select 1,N'qqqqqqqqqqqqqqqqqqqqqqqq/8872X/' union
select 2,N'/8872X/wwwwwwwwwwwwwwwwwwwwwww' union
select 3,N'1/8872X/1'
select * from @t
update @t
set body= REPLACE(cast(body as nvarchar),'/8872X/','/8872PL/')
select * from @t
--结果---
(3 row(s) affected)
id body
----------- -----------------
1 qqqqqqqqqqqqqqqqqqqqqqqq/8872X/
2 /8872X/wwwwwwwwwwwwwwwwwwwwwww
3 1/8872X/1
(3 row(s) affected)
(3 row(s) affected)
id body
----------- -------------------
1 qqqqqqqqqqqqqqqqqqqqqqqq/8872X
2 /8872PL/wwwwwwwwwwwwwwwwwwwwwww
3 1/8872PL/1
(3 row(s) affected)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询