怎么没有循环执行呢?

gongxinyan45 2006-06-11 10:49:03
create function func_cut (@s varchar(4000))
returns varchar(4000)
begin
declare @i int,@n int
declare @ss varchar(4000),@tt varchar(4000)
select @ss='',@tt=@s
select @n=1
while @n<=3
begin
select @i=charindex('/',@tt)
if @i=0
break
else
select @ss=@ss+right(@tt,len(@tt)-@i)
select @n=@n+1
break
end
return @ss
end

select dbo.func_cut('3454543/3434/23423/34234/54/54/23/34')

drop function func_cut


结果是:3434/23423/34234/54/54/23/34 为什么不是34234/54/54/23/34 呢?
...全文
178 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
云中客 2006-06-11
  • 打赏
  • 举报
回复
if @i=0
break
else
select @ss=@ss+right(@tt,len(@tt)-@i)
select @n=@n+1
break

这里有错误,不知道你的IF语句中的ELSE包括几条语句,最好用BEGIN .... END来写
OracleRoob 2006-06-11
  • 打赏
  • 举报
回复
--这样即可:

create function func_cut (@s varchar(4000))
returns varchar(4000)
begin
declare @i int,@n int
declare @ss varchar(4000),@tt varchar(4000)
select @ss='',@tt=@s

select @n=1
while @n<=3
begin
select @i=charindex('/',@tt)
select @ss=@ss+right(@tt,len(@tt)-@i)
select @n=@n+1
set @tt=@ss
set @ss=''
end
return @tt
end
go

select dbo.func_cut('3454543/3434/23423/34234/54/54/23/34')

drop function func_cut
go
LouisXIV 2006-06-11
  • 打赏
  • 举报
回复
你非但没有在每次循环的时候截断@tt,还用了break跳出循环

能循环执行才奇怪呢-_-

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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