0

我需要检查一行是否为零。对于空值,我通常使用 isnull() 但我的行永远不会为空。如果有这样的命令,我会这样使用它:

select * from maintable where column1 = iszero(@param,column1)
4

3 回答 3

1

假设您正在寻找与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)
于 2012-08-08T16:08:12.353 回答
0
SELECT * 
FROM   maintable 
WHERE  column1 = CASE @param 
                     WHEN 0 THEN column1 
                     ELSE @param 
                 END

这将为您maintable提供其中column1等于@param变量的记录。如果@param变量为 0,那么它将返回maintable.

于 2012-08-08T16:00:13.183 回答
0

试试这个:

select *
from maintable
where column1 = @param or @param = 0 
于 2012-08-08T16:07:07.650 回答