私はNULL
の整数に基づいて結果をフィルタリングするはずのストアドプロシージャを持っており、整数に一致するかすべての結果を取得できる結果を選択できる必要があります私は "すべて"の結果の部分の構文を理解することはできません。クエリは、基本的にはこれです:CASE文のELSE句としての値の範囲
Select * from dbo.TABLE
WHERE [IDField] =
CASE
WHEN ISNULL(@ID, 0) > 0 THEN @ID
ELSE ?????
END
私は0
かNull
にそれを設定すると結果が返されません。ので、すべての値が含まれるようにIN
範囲を使用したいが、これは動作しません:
Select * from dbo.TABLE
WHERE [IDField] =
CASE
WHEN ISNULL(@ID, 0) > 0 THEN @ID
ELSE 1 OR 2 OR 3
END
あるいは、この:case
なし
Select * from dbo.TABLE
WHERE [IDField] IN (
CASE
WHEN ISNULL(@mID, 0) > 0 THEN @mID
ELSE 1,2,3
END
)
あなたの問題文は非常に明確ではないが、私はあなたが '... [IDField] = @ID OR 1 =のような何かをしたいと思います1 ' 。 – mustaccio
WHERE(およびON)節でcase _expressions_を使用することは、一般的には悪い考えです。代わりにAND/ORに固執する。 – jarlh