0

クエリについてサポートが必要です:

値が -1 のパラメーターをクエリに送信すると、「IN」ステートメントでフィルター処理したいと思います。それ以外の場合は、値に従ってフィルター処理します。

私はこのようなことをしようとしていました:

WHERE  (StatusId = CASE WHEN @StatusId = - 1 
        THEN 
        @StatusId IN (1, 2, 3) 
        ELSE 
        StatusId = @StatusId  END)

ありがとう。

4

3 に答える 3

1

これにはステートメントは必要ありません。句CASEを使用するだけです。WHERE

WHERE 
(
    @StatusId = -1 AND StatusId IN (1, 2, 3) 
) 
OR
(
    StatusId = @StatusId AND @StatusId <> -1
) 
于 2012-09-11T14:29:03.633 に答える
1

使用する必要はありませんCASE。次のように直接実行できます。

WHERE 
(@StatusId = -1 AND StatusId IN (1, 2, 3) ) 
OR
(StatusId = @StatusId AND @StatusId <> -1) 

または、使用したい場合は、次CASEのようにすることができます。

WHERE StatusId IN 
(CASE @StatusId 
 WHEN -1 THEN 1,2,3 
 ELSE @StatusId 
END)
于 2012-09-11T14:29:14.820 に答える
1

次のように、例にタイプミスがあると思います。

WHEN @StatusId = - 1 THEN  @StatusId IN (1, 2, 3)  

... なら何もし@StatusId = -1ませんin (1, 2, 3)

ORとにかく、ネストされた括弧を使用することができます:

WHERE  (StatusId IN (1, 2, 3)  AND @StatusId = -1)
        OR (StatusId = @StatusId AND @StatusId <> -1)
于 2012-09-11T14:28:14.657 に答える