大家帮忙看看这个SQL错在那里?

yhmreg 2004-12-26 02:45:49
declare @str varchar(1000),@num int,@titles varchar(100)
set @str='6,7,8,9,'
set @num=0

while(@str!='')
begin
select * from help where id=convert(int,substring(@str,@num,charindex(@str,',')))
--set @titles=substring(@str,@num,charindex(@str,','))
--print @titles
set @num=convert(int,charindex(@str,','))+1
set @str=substring(@str,charindex(@str,',')+1,len(@str)-1)
end

我是想分别得到 6 7 8 9的值,大家看看如何修改,谢谢!
...全文
69 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yhmreg 2004-12-26
  • 打赏
  • 举报
回复
OK了,谢谢
yhmreg 2004-12-26
  • 打赏
  • 举报
回复
如果 @str='6,7,8,9,' 这样的情况,应该如何去掉最后一个"," 如果不去掉,那么SQL语句就是错的~
NinGoo 2004-12-26
  • 打赏
  • 举报
回复
print @sql一句是我调试时用的,可以去掉
NinGoo 2004-12-26
  • 打赏
  • 举报
回复
不需要拆分@str

直接用动态SQL,用in做条件符就可以

declare @str varchar(1000),@num int,@titles varchar(100)
declare @sql varchar(1000)
set @str='6,7,8,9'
set @num=0

if (@str!='')
begin
set @sql='select * from help where id in (' + @str +')'
print @sql
exec (@sql)
end

另外不能用while(@str!=''),这会是一个死循环,改用if判断

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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