declare @x varchar(8000),@s varchar(2) declare @bb int,@b int,@e int set @x='<ROOT> <a id="5"></a> <a id="9"></a> <a id="6"></a> <a id="10"></a> </ROOT>' select @s='10',@b=0,@e=0,@bb=-1 if charindex(@s,@x) > 0 begin while charindex(@s,substring(@x,@b,@e))=0 begin set @b=charindex('<',@x,@b+1) set @e=charindex('>',@x,@b+1) set @bb=@bb+1 end end select substring(@x,@b,@e),@bb,@b,@e
楼上的兄台可能没有明白我的意思 我要得到的是position()
declare @x varchar(8000),@s varchar(2) declare @bb int,@b int,@e int set @x='<ROOT> <a id="5"></a> <a id="9"></a> <a id="6"></a> <a id="10"></a> </ROOT>' select @s='9',@b=0,@e=0,@bb=0 if charindex(@s,@x) > 0 begin while charindex(@s,substring(@x,@b,@e-@b+1))=0 begin set @b=charindex('<',@x,@b+1) set @e=charindex('>',@x,@e+1) set @bb=@bb+1 end end set @bb=@bb/2 select @bb ----------- 2(所影响的行数为 1 行) 这个2不是你要的吗
declare @bb int,@b int,@e int
set @x='<ROOT>
<a id="5"></a>
<a id="9"></a>
<a id="6"></a>
<a id="10"></a>
</ROOT>'
select @s='10',@b=0,@e=0,@bb=-1
if charindex(@s,@x) > 0
begin
while charindex(@s,substring(@x,@b,@e))=0
begin
set @b=charindex('<',@x,@b+1)
set @e=charindex('>',@x,@b+1)
set @bb=@bb+1
end
end
select substring(@x,@b,@e),@bb,@b,@e
我要得到的是position()
declare @bb int,@b int,@e int
set @x='<ROOT>
<a id="5"></a>
<a id="9"></a>
<a id="6"></a>
<a id="10"></a>
</ROOT>'
select @s='9',@b=0,@e=0,@bb=0
if charindex(@s,@x) > 0
begin
while charindex(@s,substring(@x,@b,@e-@b+1))=0
begin
set @b=charindex('<',@x,@b+1)
set @e=charindex('>',@x,@e+1)
set @bb=@bb+1
end
end
set @bb=@bb/2
select @bb
-----------
2(所影响的行数为 1 行)
这个2不是你要的吗