SQLServer2012 如何替换修改ntext字段里的内容?

hzymlx 2016-06-30 09:44:48
大家好!
最近遇到一个问题,表里有一个字段是ntext类型,里面有一个或者多个图片标签<img src='图片路径/图片名字'>,

由于路径不对,还有图片的命名规则变了。所以需要删除src里的路径,同时按照规则修改图片的名字。

这里好像涉及到两个问题。一个是替换掉路径,二是修改图片名字。没有头绪,希望大家帮忙,谢谢!
...全文
447 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hzymlx 2016-06-30
  • 打赏
  • 举报
回复
好,谢谢你的回答。 我感觉我的描述够清楚了!
唐诗三百首 2016-06-30
  • 打赏
  • 举报
回复
不好意思,严格来讲,规则还是不够明确. 建议发帖时, 打完字后,请至少自己先读一遍,确保没有错别字,逻辑清楚,能读懂了再发出来. 应考虑从阅读者的角度去理解问题,不应该浪费别人时间来猜你的意思. 自己的时间宝贵,别人花时间帮你解决问题的时间,也同样宝贵.
hzymlx 2016-06-30
  • 打赏
  • 举报
回复
时间是有个创建时间字段createtime, 路径替换规则 /upfile/年月日(yyyyMMdd)/12345678.jpg 替换成W02016063012345678.jpg
唐诗三百首 2016-06-30
  • 打赏
  • 举报
回复
引用 6 楼 hzymlx 的回复:
yyyymmdd创建的时间:年月日(w020160630)+ 原来图片的名字 动态这块没什么思路?
请问: 1.创建时间是动态还是静态的? 从何得知? 2.路径替换的规则是什么?
hzymlx 2016-06-30
  • 打赏
  • 举报
回复
引用 4 楼 ap0405140 的回复:
图片名字要变成w0yyyymmdd+8个以上的数据。 --> 请问yyyymmdd是指什么? 8个以上的数据又是什么? 需提供明确的规则,才能帮你写SQL. replace怎么处理这种变动的? --> 可用动态SQL实现.
yyyymmdd创建的时间:年月日(w020160630)+ 原来图片的名字 动态这块没什么思路?
kingtiy 2016-06-30
  • 打赏
  • 举报
回复
1.先转nvarchar类型,再执行字符串操作. replace 2.使用updatetext来操作. 参考: http://www.cnblogs.com/sunxi/p/4600152.html
唐诗三百首 2016-06-30
  • 打赏
  • 举报
回复
图片名字要变成w0yyyymmdd+8个以上的数据。 --> 请问yyyymmdd是指什么? 8个以上的数据又是什么? 需提供明确的规则,才能帮你写SQL. replace怎么处理这种变动的? --> 可用动态SQL实现.
hzymlx 2016-06-30
  • 打赏
  • 举报
回复
谢谢两位的回答。 是这样,原来的路径是这样/upfile/yyyymmdd/图片名字 图片名字要变成w0yyyymmdd+8个以上的数据。 二楼的语句replace里用的都是固定的,而数据库里的路径是年月日时变动的。replace怎么处理这种变动的?
卖水果的net 2016-06-30
  • 打赏
  • 举报
回复
所以需要删除src里的路径,同时按照规则修改图片的名字。 什么样的规则呢?
唐诗三百首 2016-06-30
  • 打赏
  • 举报
回复
如下demo,供参考,

create table #t(src ntext)

insert into #t(src)
  select N'<img src=''C:\001.jpg''>' union all
  select N'<img src=''C:\001.jpg''><img src=''C:\002.jpg''>'


-- 替换掉路径
update #t set src=replace(cast(src as nvarchar(max)),
                                           N'C:\',
                                           N'D:\Pictures\')

-- 修改图片名字
update #t set src=replace(cast(src as nvarchar(max)),
                                           N'001.jpg',
                                           N'P001.jpg')


-- 结果
select * from #t

/*
src
----------------------------------------------------------------------------------------------------
<img src='D:\Pictures\P001.jpg'>
<img src='D:\Pictures\P001.jpg'><img src='D:\Pictures\002.jpg'>

(2 row(s) affected)
*/
gw6328 2016-06-30
  • 打赏
  • 举报
回复
应该可以按照路径的规则来吧比如把='xxx/yyy'替换成***的东西。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧