Tsql where子句中的SQL可空位

Tsql where子句中的SQL可空位,tsql,Tsql,如果我将null传递给参数,则这不起作用。显然,当我将谓词更改为columnb为null时,它会起作用 在不使用条件逻辑(if/else)的情况下,我能做些什么使其工作 更新:我根据@gbn answer找到了答案 create procedure [dbo].[MySproc] @Value bit = null as select columna from tablea where columnb = @Value 假设您希望在1=1、0=0或NULL=NULL时为true where

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

在不使用条件逻辑(if/else)的情况下,我能做些什么使其工作

更新:我根据@gbn answer找到了答案

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

select columna from tablea where columnb = @Value

假设您希望在1=1、0=0或NULL=NULL时为true

where (@Value is null and columnb is null) or (columnb = @Value)
列中的0/1如何,参数为NULL。通常情况下,这将是“给我行”


您的逻辑没有意义,因为您正在使用NULL来表示某事…

假设您希望在1=1、0=0或NULL=NULL时为true

where (@Value is null and columnb is null) or (columnb = @Value)
列中的0/1如何,参数为NULL。通常情况下,这将是“给我行”


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

对,我理解它导致NULL表示某事,这就是它不起作用的原因。空!=无效的你给了我一个解决问题的办法。谢谢。对,我知道它会导致NULL表示某种意义,这就是它不起作用的原因。空!=无效的你给了我一个解决问题的办法。谢谢
where columnb = ISNULL(@Value, columnb)