日期:2014-05-18  浏览次数:20446 次

怎么修改这字段内容
表:
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>&nbsp;</p>  <div><b>舞动清风我型我秀<span>&nbsp;跳出激情舞动精彩</span></b></div>  <div><b>&nbsp;</b></div>  <div>为了迎接党的十八大,巩固廉洁文化进社区的丰硕成果,展社区居民靓丽风采,丰富居民业余生活,<span>5月11日下午都宝花园社区文化艺术节系列之四&ldquo;舞动清风、我型我秀&rdquo;第二届居民健身大比舞比赛在社区活动广场举行,比赛中,参赛选手们的出色发挥,和社区居民的热情参与,使整个比赛充满了激情与欢乐,由社区老年队表演的柔力球《茉莉花》将整场比赛推向了高潮。本次比赛得到广大社区居民的高度赞扬,他们表示今后将积极参加社区开展的各项活动,丰富业余生活,提高自身修养。</span></div>  <div>(都宝花园社居委<span>&nbsp;黄清泉)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/