where子句中的SQL可空位

时间:2011-08-07 20:08:36

标签: tsql

create procedure [dbo].[MySproc]
@Value bit = null
as

select columna from tablea where columnb = @Value

如果我将null传递给参数,则不起作用。显然,当我将谓词更改为columnb为null时,它可以正常工作。

如果不使用条件逻辑(if / else),我该怎么做?

更新:我根据@gbn回答

计算出来了
where (@Value is null and columnb is null) or (columnb = @Value)

1 个答案:

答案 0 :(得分:4)

如果1 = 1,0 = 0或NULL = NULL

,假设你想要为真
select columna from tablea 
where columnb = @Value OR (columnb IS NULL AND @Value IS NULL)

列中0/1,参数为NULL。通常,这将是“只给我行”

where columnb = ISNULL(@Value, columnb)

你的逻辑没有意义,因为你使用NULL表示某事......