if中是否可以带有in

风一样的大叔 2012-04-11 03:21:10
declare @priorrodno varchar(50) 
declare @priorstate varchar(50)
select top 1 @priorrodno=rodno,@priorstate=state from PRO_Priorflow where flowprocess='脱气' and left(state,1)='P'
order by state
if (@@ROWCOUNT>0)
begin
if(@priorrodno in('A03P0058','A10R0078','A08R0107','A06P0040','A01P0317','A05R0126','A02P0308'))
begin
print 'a'

end
end

貌似if(@priorrodno in('A03P0058','A10R0078','A08R0107','A06P0040','A01P0317','A05R0126','A02P0308')) 这句有问题,敢问哪位高手是否可以这么写或者有其他的判断
@priorrodno在这组数据里面的方法吗?
...全文
117 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
风一样的大叔 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

和语法没有关系,语法是正确的。
[/Quote]谢谢叶子姐姐,不好意思,刚结贴了,下次给分哈
叶子 2012-04-11
  • 打赏
  • 举报
回复
和语法没有关系,语法是正确的。
风一样的大叔 2012-04-11
  • 打赏
  • 举报
回复
谢谢大家,问题找到了,是下面的else后面少了个begin end
Felixzhaowenzhong 2012-04-11
  • 打赏
  • 举报
回复
有可能就 没有走到你的 if (@@ROWCOUNT>0) 这个分支就。
if (@@ROWCOUNT>0) 
begin
if(@priorrodno in('A03P0058','A10R0078','A08R0107','A06P0040','A01P0317','A05R0126','A02P0308'))
begin
print 'a'
end
else
begin
print 'b'
end
end
else
begin
print '11'
end

这样写看看走到那个分支了
Felixzhaowenzhong 2012-04-11
  • 打赏
  • 举报
回复
declare @dd varchar(32)='ds'
if @dd in('sasd','3sf','343','ds')
begin
print 1
end
else
begin
print 2
end
/*1*/
simonxt 2012-04-11
  • 打赏
  • 举报
回复
declare @priorrodno varchar(50)
set @priorrodno='A03P0058'

if(@priorrodno in('A03P0058','A10R0078','A08R0107','A06P0040','A01P0317','A05R0126','A02P0308'))
begin
print 'a'

end

------
这句没问题呢, 输出 'a'
simonxt 2012-04-11
  • 打赏
  • 举报
回复
那先打印一下@priorrodno这个,看看是什么值。
simonxt 2012-04-11
  • 打赏
  • 举报
回复
或者用字符串比较的方式,但注意变量及字符串前后都要加上‘,’。
if(charindex(','+@priorrodno+',', ',A03P0058,A10R0078,A08R0107,A06P0040,A01P0317,A05R0126,A02P0308,')>0)
风一样的大叔 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

可以这么写,没问题。
[/Quote]没有输出a哇
simonxt 2012-04-11
  • 打赏
  • 举报
回复
可以这么写,没问题。

34,575

社区成员

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

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