请教在sql中,如何从一个字符串中提取img的路径呢?

比如:
declare @sql varchar(1000)
set @sql='<br /><br />程序员身上的一个好笑的事情是,我们在毕生的职业生涯中都相信:我们的工作是告诉计<img src="http://www.csdn.com/ArticleImages/20130507000941.jpg" alt="def" />算机如何去做。<br /><br /><strong>真实情况</strong><br />真实情况是,计算机能正确的按照命令去运行。无论你写的是“Hello World”,还是用无人飞机去杀死一个人,而人会。计算机把程序员写的代码编译成字节比特,真正会去看你写的是什么的只有人类。<br /><br /><strong>写软件要像讲故事</strong><br />如果你对你的工作和你写的代码的行为有了新的认识,你会马上很清楚的发现,编程工作更像<img Src="http://www.csdn.com/ArticleImages/20130507000942.jpg" alt="abc" />讲故事。<br /><br />想一想。你是如何知道一个人讲故事没人爱听的?这很简单,他老跑题,他老是纠结在不重要的细节上,他老是在故事场景中挑来跳去,等等。你立刻能知道故事被他讲烂了。'

请问要从@sql指取出
http://www.csdn.com/ArticleImages/20130507000941.jpg

http://www.csdn.com/ArticleImages/20130507000942.jpg
这两个路径要如何实现呢?
...全文
230 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 1 楼 DBA_Huangzj 的回复:
如果只有两个就好办,要是有两个以上的话可能需要用正则表达式了
declare @sql varchar(max)
set @sql='<br /><br />程序员身上的一个好笑的事情是,我们在毕生的职业生涯中都相信:
我们的工作是告诉计<img src="http://www.csdn.com/ArticleImages/20130507000941.jpg" alt="def" />算机如何去做。<br /><br /><strong>真实情况</strong><br />真实情况是,计算机能正确的按照命令去运行。无论你写的是“Hello World”,还是用无人飞机去杀死一个人,而人会。计算机把程序员写的代码编译成字节比特,真正会去看你写的是什么的只有人类。<br /><br /><strong>写软件要像讲故事</strong><br />如果你对你的工作和你写的代码的行为有了新的认识,你会马上很清楚的发现,编程工作更像<img Src="http://www.csdn.com/ArticleImages/20130507000942.jpg" alt="abc" />讲故事。<br /><br />想一想。你是如何知道一个人讲故事没人爱听的?这很简单,他老跑题,他老是纠结在不重要的细节上,他老是在故事场景中挑来跳去,等等。你立刻能知道故事被他讲烂了。'

SELECT SUBSTRING(@sql,CHARINDEX('"h',@sql,1)+1,CHARINDEX('" alt="',@sql,1)-CHARINDEX('"h',@sql,1))
SELECT REVERSE(SUBSTRING(REVERSE(@sql),PATINDEX('%gpj%',REVERSE(@sql)),PATINDEX('%"=crs%',REVERSE(@sql))-PATINDEX('%gpj%',REVERSE(@sql))))

/*
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
http://www.csdn.com/ArticleImages/20130507000941.jpg"

(1 行受影响)


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
http://www.csdn.com/ArticleImages/20130507000942.jpg
*/
不是只有两个,这个数量是不限定的。
  • 打赏
  • 举报
回复
思路很特别,谢谢了。
qiuchu2003 2013-05-08
  • 打赏
  • 举报
回复
先建个表和存储过程

CREATE TABLE [dbo].[test](
	[test_str] [varchar](max) NULL
) ON [PRIMARY]



CREATE proc [dbo].[ins_splitproc](@list varchar(max))
as
DECLARE @ix int, @pos int, @str varchar(1000), @sum int
delete from test
SET @pos = 1
SET @ix = 1
SET @sum = 0 
WHILE @ix > 0 
BEGIN
SET @ix = charindex('"', @list, @pos) 
IF @ix > 0
SET @str = substring(@list, @pos, @ix - @pos) 
ELSE
SET @str = substring(@list, @pos, len(@list))
SET @str = ltrim(rtrim(@str))
insert into test values (@str)
SET @pos = @ix + 1 
END 
select * from test where test_str like '%.jpg' 
GO
调用存储过程

declare @sql varchar(1000)
set @sql='<br /><br />程序员身上的一个好笑的事情是,我们在毕生的职业生涯中都相信:我们的工作是告诉计<img src="http://www.csdn.com/ArticleImages/20130507000941.jpg" alt="def" />算机如何去做。<br /><br /><strong>真实情况</strong><br />真实情况是,计算机能正确的按照命令去运行。无论你写的是“Hello World”,还是用无人飞机去杀死一个人,而人会。计算机把程序员写的代码编译成字节比特,真正会去看你写的是什么的只有人类。<br /><br /><strong>写软件要像讲故事</strong><br />如果你对你的工作和你写的代码的行为有了新的认识,你会马上很清楚的发现,编程工作更像<img Src="http://www.csdn.com/ArticleImages/20130507000942.jpg" alt="abc" />讲故事。<br /><br />想一想。你是如何知道一个人讲故事没人爱听的?这很简单,他老跑题,他老是纠结在不重要的细节上,他老是在故事场景中挑来跳去,等等。你立刻能知道故事被他讲烂了。'
exec ins_splitproc @sql

/*
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
http://www.csdn.com/ArticleImages/20130507000941.jpg
http://www.csdn.com/ArticleImages/20130507000942.jpg
*/
發糞塗牆 2013-05-07
  • 打赏
  • 举报
回复
如果只有两个就好办,要是有两个以上的话可能需要用正则表达式了
declare @sql varchar(max)
set @sql='<br /><br />程序员身上的一个好笑的事情是,我们在毕生的职业生涯中都相信:
我们的工作是告诉计<img src="http://www.csdn.com/ArticleImages/20130507000941.jpg" alt="def" />算机如何去做。<br /><br /><strong>真实情况</strong><br />真实情况是,计算机能正确的按照命令去运行。无论你写的是“Hello World”,还是用无人飞机去杀死一个人,而人会。计算机把程序员写的代码编译成字节比特,真正会去看你写的是什么的只有人类。<br /><br /><strong>写软件要像讲故事</strong><br />如果你对你的工作和你写的代码的行为有了新的认识,你会马上很清楚的发现,编程工作更像<img Src="http://www.csdn.com/ArticleImages/20130507000942.jpg" alt="abc" />讲故事。<br /><br />想一想。你是如何知道一个人讲故事没人爱听的?这很简单,他老跑题,他老是纠结在不重要的细节上,他老是在故事场景中挑来跳去,等等。你立刻能知道故事被他讲烂了。'

SELECT SUBSTRING(@sql,CHARINDEX('"h',@sql,1)+1,CHARINDEX('" alt="',@sql,1)-CHARINDEX('"h',@sql,1))
SELECT REVERSE(SUBSTRING(REVERSE(@sql),PATINDEX('%gpj%',REVERSE(@sql)),PATINDEX('%"=crs%',REVERSE(@sql))-PATINDEX('%gpj%',REVERSE(@sql))))

/*
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
http://www.csdn.com/ArticleImages/20130507000941.jpg"

(1 行受影响)


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
http://www.csdn.com/ArticleImages/20130507000942.jpg
*/

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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