2012-08-08 97 views
0

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

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

我很困惑。你问如何检查包含整数的列是否包含0值? – 2012-08-08 15:56:36

+3

你是什么意思“IsZero”?为什么你只是不使用'select * from maintable where column1 = 0?' – David 2012-08-08 15:57:14

+0

也许这是有帮助的:http://stackoverflow.com/q/580364/405117 – Vikram 2012-08-08 15:59:03

回答

1

假设你寻找的东西以同样的方式工作,因为IsNull()你可以定义自己的函数用法

select 
    Returns5 = dbo.Iszero(5, 10), 
    Returns10 = dbo.Iszero(0, 10) 

create function IsZero(@value int, @default int) 
    returns int 
as 
begin 

    if (@value <> 0) 
     return @value 

    return @default 
end 

例或在你的情况下

select * from maintable where column1 = IsZero(@param,column1) 
0
SELECT * 
FROM maintable 
WHERE column1 = CASE @param 
        WHEN 0 THEN column1 
        ELSE @param 
       END 

这会给你哪里column1等于@param变量在maintable记录。如果@param变量为0,则它​​将返回maintable中的所有记录。

0

试试这个:

select * 
from maintable 
where column1 = @param or @param = 0