0

この機能を使用して、SQLストアドプロシージャにwhere句を記述したいと思います。

if (@userId=0)
begin
    SELECT * from tblUsers
end
else
begin
    SELECT * from tblUsers
    WHERE userId= @userId
end

ストアドプロシージャに送信するid(example:123)と、特定のプロシージャが表示されます。IDとして「0」を送信すると、データ全体が返されますが、それ以外の場合は使用しません。where句を改善できるものがあるはずです。

例えば

SELECT * from tblUsers
WHERE (userId= @userId OR @userId = 0) and @userId = 123... bla bla

(またはもちろんこれはそうではありません)

何か助けはありますか?

4

2 に答える 2

3

where句でユースケース条件を使用できます。

SELECT 
  * 
from 
  tblUsers
WHERE
  userId=(case when @userId=0 then userId else @userId end)
于 2013-01-03T07:46:39.600 に答える
1

@useridでnullを渡した場合の提案のために、このように簡単に行うことができます

SELECT * from tblUsers
    WHERE userId= Isnull(@userId,userId)

これは余分な条件を回避します...データがない場合、またはこのように実行できる場合は、@ useId=nullを渡すだけです

if (@userId=0)
  select @userId = null
SELECT * from tblUsers
    WHERE userId= Isnull(@userId,userId)
于 2013-01-03T07:57:38.247 に答える