3

'='、 などの比較演算子を保持するパラメーターを使用し、「case when then」を含む where 句で使用するか、次のような if ステートメントを使用したいと'>'思い'>='ます。

WHERE  
case @Operator
 when '=' then (@Amount is null) or (@Amount = 0 ) or (Amount= @Amount)  
 when '>' then (@Amount is null) or (@Amount = 0 ) or (Amount> @Amount)  
 when '>=' then (@Amount is null) or (@Amount = 0 ) or (Amount>= @Amount)      
END
4

2 に答える 2

1

これでうまくいくと思います:

WHERE 
  @Amount IS NULL
  OR @Amount = 0
  OR Amount =  CASE @Operator WHEN '='  THEN @Amount END
  OR Amount >  CASE @Operator WHEN '>'  THEN @Amount END
  OR Amount >= CASE @Operator WHEN '>=' THEN @Amount END;
于 2012-09-23T16:04:47.803 に答える
0
where isnull(@Amount, 0) = 0
   or ( Amount = @Amount and @Operator = '=')
   or ( Amount > @Amount and @Operator = '>')
   or ( Amount >= @Amount and @Operator = '>=')
于 2012-09-25T11:28:45.187 に答える