如何在一个查询中返回null和not-null值

时间:2011-07-21 19:38:53

标签: sql null

我有一个整数字段person_id,默认值为NULL。我正在使用存储过程并提取人名和地址。如果用户未传递值,则同时拉入所有记录,null和非空值。我该怎么做。可能是个案陈述或其他?

my_procedure(          <--- this is pseudo code
@person_id int null
begin
select name, address from PERSON
WHERE person_id like case NULL then NULL else '%'
end

Null需要 - &gt;一片空白 号码要求= 123

修改 我也需要一个条件,如果没有通过,所有值都被拉。如果传递了某些内容,则会搜索该值

2 个答案:

答案 0 :(得分:1)

WHERE (@personID is NULL OR personid IS NULL OR personid = @personid)

只需将您的案例放在括号WHERE条款中。

修改

添加了另一个OR条款,以涵盖您要求的 THINK

答案 1 :(得分:0)

这种情况下的正确代码是

IsNULL(mycolum,'') LIKE CASE when person_id is null then '%' else '%' + person_id + '%' 

IsNULL将 null 值转换为空字符串,然后您只需要担心字符串,而不是空值。