函数代码
ALTER FUNCTION [dbo].[f_shjsjyw]
(
-- Add the parameters for the function here
@name nvarchar(max)
)
returns @temp table(F1 varchar(500))
AS
BEGIN
-- Fill the table variable with the rows for your result set
declare @title as varchar(max)
declare @left as int
declare @right as int
set @title=@name
set @left=CHARINDEX('<ul class=''ul_C1''><li class=''li_C1''><table><tr><td width=600>',@title)
set @right=CHARINDEX('</ul>',@title)
while @left>=1
begin
insert @temp values (LEFT(@title,@right+4))
set @title=right(@title,LEN(@title)-@right+2)
set @left=CHARINDEX('<ul class=''ul_C1''><li class=''li_C1''><table><tr><td width=600>',@title)
set @right=CHARINDEX('</ul>',@title)
end
RETURN
END
测试数据
<ul class='ul_C1'><li class='li_C1'><table><tr><td width=600><a href='ITEM_D.jsp?id=D14012616'>测试系统</a><td class='li_C1' align=right>2014-11-25</td></tr></table><li class='li_C2'>我公司需要对生产的产品和原材料要进行性能检测,由于国家对管理很严格,我公司只能把产品和材料拿到国家权威机构进行检测,往往需要十天半个月的,这样很耽误时间,同时还需要承担非常昂贵的检测费用。所以<a href='ITEM_D.jsp?id=D14012616'>...</a></ul><ul class='ul_C1'><li class='li_C1'><table><tr><td width=600><a href='ITEM_D.jsp?id=D14012615'>运动场地铺地材料检测服务</a><td class='li_C1' align=right>2014-11-20</td></tr></table><li class='li_C2'>本项目“运动场地铺地材料检测服务”主要是研发出的一种运动场地铺地材料测试仪和关于冲击吸收率、垂直变形等特性的测试方法。 本项目研发的测试仪器具有测量这两个数据的功能,节省了时间,节约了资源,是一种一<a href='ITEM_D.jsp?id=D14012615'>...</a></ul>
直接调用可以,一张表存一条数据调用也可以,但是一张表存多条数据的时候,就没法处理了,处理到第二条的时候就过不去,一直执行中,也不报错
------解决思路----------------------
把这段代码
SET @title = RIGHT( @title, DATALENGTH(@title) - (@right+2) )
替换为
SET @title = SUBSTRING( @title,@right + 5 ,DATALENGTH(@title) )
------解决思路----------------------
insert @temp values (LEFT(@title,@right+4))
set @title=right(@title,LEN(@title)-@right+2)
这2句中的数字错得太离谱了,先用简单字符测试一下就知道了。