我需要检查一行是否为零。对于空值,我通常使用 isnull() 但我的行永远不会为空。如果有这样的命令,我会这样使用它:
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 = CASE @param
WHEN 0 THEN column1
ELSE @param
END
这将为您maintable
提供其中column1
等于@param
变量的记录。如果@param
变量为 0,那么它将返回maintable
.
试试这个:
select *
from maintable
where column1 = @param or @param = 0