表:
CREATE TABLE [dbo].[WorkData_Archives](
[SysID] [int] IDENTITY(1,1) NOT NULL,
[WContent] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NOT NULL
)
在WContent字段里类似内容:
- HTML code
<p align="center"><img src="http://file.wmb.gov.cn/Image/Upload_1160320120511172127.jpg" alt="" /></p> <p align="center"><span style="font-family: 宋体; color: #0000ff; font-size: 12pt">照片 091</span></p> <p align="center"><img src="http://file.wmb.gov.cn/Image/Upload_1160320120511172049.jpg" alt="" /></p> <p align="center"><span style="font-family: 宋体; color: #0000ff; font-size: 12pt">照片 086</span></p> <p> </p> <div><b>舞动清风我型我秀<span> 跳出激情舞动精彩</span></b></div> <div><b> </b></div> <div>为了迎接党的十八大,巩固廉洁文化进社区的丰硕成果,展社区居民靓丽风采,丰富居民业余生活,<span>5月11日下午都宝花园社区文化艺术节系列之四“舞动清风、我型我秀”第二届居民健身大比舞比赛在社区活动广场举行,比赛中,参赛选手们的出色发挥,和社区居民的热情参与,使整个比赛充满了激情与欢乐,由社区老年队表演的柔力球《茉莉花》将整场比赛推向了高潮。本次比赛得到广大社区居民的高度赞扬,他们表示今后将积极参加社区开展的各项活动,丰富业余生活,提高自身修养。</span></div> <div>(都宝花园社居委<span> 黄清泉)2012-5-11</span></div>
也就是说有很多图片信息:<img src="http://file.wmb.gov.cn/Image/Upload_1160320120511172127.jpg" alt="" />
当时没有想到用户发的图片很多,图片存放在一个目录,现在我需要按月存放图片,也就是要把这样的连接修改成:
<img src="http://file.wmb.gov.cn/Image/20120511/Upload_1160320120511172127.jpg" alt="" />
图片名称格式:前缀Upload,上传人编号11603(都是5位),日期时间 20120511172127,图片后缀.jpg
我怎么用SQL来修改
------解决方案--------------------
- SQL code
-- 测试数据select s='<p align="center"><img src="http://file.wmb.gov.cn/Image/Upload_1160320120511172127.jpg" alt="" /></p>' into #ta-- 结果select s=replace(cast(s as varchar(max)),'Image/Upload','Image/'+ substring(cast(s as varchar(max)), charindex('Upload_',cast(s as varchar(max)))+12, 6) +'/Upload')from #ta-- <p align="center"><img src="http://file.wmb.gov.cn/Image/201205/Upload_1160320120511172127.jpg" alt="" /></p>-- 拿得出的结果更新一下就可以了
------解决方案--------------------
WContent--为什么不用xml类型?sql05以上版本可以满足这样的格式
------解决方案--------------------
XML类型!顶大版一个
------解决方案--------------------
- SQL code
declare @s nvarchar(2000)='<p align="center"><img src="http://file.wmb.gov.cn/Image/Upload_1160320120511172127.jpg" alt="" /></p>'set @s=STUFF(@s,charindex('Upload_',@s),0,substring(@s,charindex('Upload_',@s)+12,8)+'/')select @s
------解决方案--------------------
substring切割字符串中日期再替换掉/Image/