这是where条件中的一个,@stage是存储过程传入的参数,是nvarchar(100)
where @stage=N'All' or (@stage<>N'All' and ProjectStage.StageName=@stage)执行时stage=all的时候都ok(大小写我就直接忽略了,打大写麻烦)但是当给定某值时就什么数也抽不出来了,例如@stage = N'Interest',等等(有数据)
我是在哪里缺了什么吗

解决方案 »

  1.   

    where @stage='all' or ProjectStage.StageName=@stage
      

  2.   

    你得条件可以简化成这样,你把@stage换为N'Interest'看看
      

  3.   

    估计在你最后一个条件 ProjectStage.StageName=@stage
    估计要使用动态SQL.exec(' ... where @stage=N''All'' or (@stage <>N''All'' and ProjectStage.StageName=N''' + @stage + '''') 
      

  4.   

    从提供的语句看,没错或者你把语句贴全来,StageName的数据类型也提供下
      

  5.   


    写错了,直接这样即可.where @stage='all' or ProjectStage.StageName = @stage
      

  6.   

    4楼:整个语句太长了,相关部分很碎不好择出来
    stagename的类型是nvarchar(100)