日期:2014-05-18  浏览次数:20497 次

存储过程问题--在线求解
SQL code
if exists(select * from sysobjects where type='FN' and name='getSplitNum')
drop function getSplitNum
go
create function getSplitNum(@content text,@split varchar(10))
returns int
as
begin
    declare @index int;set @index=1;
    declare @num int;set @num=0;
    declare @start int;set @start=0;
    while @index>0
    begin        
        set @index=charindex(@split,@content,@start);
        set @start=@index+1;
        set @num=@num+1;
    end
    return @num;
end
go


dbo.getSplitNum(@c_url,'|||')

存储过程里,如上代码,计算某字符串里,有多少个由|||分开的字符串. 运行结果最大值只有87,请教老师,问题在哪?

---------------------------------------
问题基本查到.但不知道怎么解决.由于@c_url过长(长度达到13000字符以上),导致出现比实际值小很多.

请教各位老师

------解决方案--------------------
你的字符串中是不是有中文字符?或者其他由非英文+数字组成的字符串?
把@content 定义为ntext看看。
------解决方案--------------------
探讨

感觉问题出在 charindex 里,而不是text问题.