首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请问在sql中,怎么从一个字符串中提取img的路径呢

2013-07-01 
请教在sql中,如何从一个字符串中提取img的路径呢?比如:declare @sql varchar(1000)set @sqlbr /br /

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

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

http://www.csdn.com/ArticleImages/20130507000942.jpg
这两个路径要如何实现呢?
[解决办法]
如果只有两个就好办,要是有两个以上的话可能需要用正则表达式了

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

SELECT SUBSTRING(@sql,CHARINDEX('"h',@sql,1)+1,CHARINDEX('" alt="请问在sql中,怎么从一个字符串中提取img的路径呢"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
*/

[解决办法]
先建个表和存储过程

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="请问在sql中,怎么从一个字符串中提取img的路径呢" />算机如何去做。<br /><br /><strong>真实情况</strong><br />真实情况是,计算机能正确的按照命令去运行。无论你写的是“Hello&nbsp;World”,还是用无人飞机去杀死一个人,而人会。计算机把程序员写的代码编译成字节比特,真正会去看你写的是什么的只有人类。<br /><br /><strong>写软件要像讲故事</strong><br />如果你对你的工作和你写的代码的行为有了新的认识,你会马上很清楚的发现,编程工作更像<img Src="http://www.csdn.com/ArticleImages/20130507000942.jpg" alt="请问在sql中,怎么从一个字符串中提取img的路径呢" />讲故事。<br /><br />想一想。你是如何知道一个人讲故事没人爱听的?这很简单,他老跑题,他老是纠结在不重要的细节上,他老是在故事场景中挑来跳去,等等。你立刻能知道故事被他讲烂了。'
exec ins_splitproc @sql

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

热点排行