行がゼロかどうかを確認する必要があります。null の場合、通常は isnull() を使用しますが、行が null になることはありません。そのようなコマンドがあれば、次のように使用します。
select * from maintable where column1 = iszero(@param,column1)
IsNull()
独自の関数を定義できるのと同じように機能するものを探していると仮定します
create function IsZero(@value int, @default int)
returns int
as
begin
if (@value <> 0)
return @value
return @default
end
使用例
select
Returns5 = dbo.Iszero(5, 10),
Returns10 = dbo.Iszero(0, 10)
またはあなたの場合
select * from maintable where column1 = IsZero(@param,column1)
これを試して:
select *
from maintable
where column1 = @param or @param = 0
SELECT *
FROM maintable
WHERE column1 = CASE @param
WHEN 0 THEN column1
ELSE @param
END
これにより、 が変数maintable
にcolumn1
等しい のレコードが得られます。変数が 0@param
の場合、内のすべてのレコードが返されます。@param
maintable