2012-08-08 148 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