0
 select * 
 from mytable
 where (if @key=0 
           pkey>=0
        else
           pkey = @key)

@keyはストアドプロシージャに渡される値でpkeyあり、はの列ですmytable

4

3 に答える 3

2

これはどう:

 select * 
 from mytable
 where ((@key=0 AND pkey>=0) OR (@key<>0 AND pkey = @key))
于 2013-02-05T17:56:21.247 に答える
1

CASE以下のように(あなたが試している方法と少し似ていますif)を使用します。(デモ

select * 
from mytable
where pkey = case when @key <> 0 then @key 
                  else Abs(pkey) end
于 2013-02-05T18:13:01.563 に答える
0

これはあなたのために働くでしょう。caseステートメントを使用すると、動的フィルターを適用できます。

select *   
from mytable  
where  1 = case 
             when @key=0 then case when pkey>=0 then 1 else 0 end
             else case when pkey = @key then 1 else 0 end
           end
于 2013-02-05T19:12:59.727 に答える