我有一个整数字段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
修改 我也需要一个条件,如果没有通过,所有值都被拉。如果传递了某些内容,则会搜索该值
答案 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 值转换为空字符串,然后您只需要担心字符串,而不是空值。