sql 替换问题

来源:百度知道 编辑:UC知道 时间:2024/06/27 14:00:33
表A
message

ABC img1234.jpg ABC
ABC img2434.jpg ABC
....

如上,message中含有规律的以img开头,中间无规则,.jpg结尾的 数据

如何将这些数据替换删除
我的意思是要删除里面的 img1234.jpg
保留ABC....等。

UPDATE `a` SET `message` = replace (`message`,'img%.jpg','')

--3楼还是不行。

这样的语句怎么不行呢??

--模拟数据
declare @table table(message varchar(8000))
insert into @table
select 'ABC img123.jpgCDD'
union all select 'meiimgddddaaaaaa.jpgjpg'
union all select '.jpg好img非imgddddaa.jpgaaaa.jpg测试'
--实际代码

--方法一 一条记录只换一次,如果写成函数递推的话就可以解决多个关键字的问题
declare @loc int
update @table set @loc=patindex('%img%.jpg%',message),
message=substring(message,1,@loc-1)
+substring(message,charindex('.jpg',message,@loc)+4,len(message))
--方法二 用replace,一条记录可以替换多个,但同一记录多个关键字必须一样(不同记录当然可以不一样)
declare @loc int
update @table set @loc=patindex('%img%.jpg%',message),
message=replace(message,
substring(message,@loc,charindex('.jpg',message,@loc)-@loc+4),'')

--结果
select * from @table
message
--------------------------------------------------
ABC CDD
meijpg
.jpg好aaaa.jpg测试