Sql 如何在一个查询中同时返回null和notnull值
我有一个整数字段person_id,默认值为NULL。我正在使用一个存储过程并提取人们的姓名和地址。如果用户没有传递一个值,所有记录都会同时被拉入null和notnull。我该怎么做呢。可能是案例陈述还是其他Sql 如何在一个查询中同时返回null和notnull值,sql,null,Sql,Null,我有一个整数字段person_id,默认值为NULL。我正在使用一个存储过程并提取人们的姓名和地址。如果用户没有传递一个值,所有记录都会同时被拉入null和notnull。我该怎么做呢。可能是案例陈述还是其他 my_procedure( <--- this is pseudo code @person_id int null begin select name, address from PERSON WHERE person_id like case NULL then
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
my_过程(为空)
数字=123
编辑
我还需要一个条件,如果没有传递任何内容,则会拉取所有值。如果传递了某个内容,则会搜索该值,其中(@personID为NULL或personID为NULL或personID=@personID)
只需将两个案例都放在插入的WHERE
子句中即可
编辑
添加了另一个
或
子句,以涵盖我认为您要求的内容。本例中正确的代码是
IsNULL(mycolum,'') LIKE CASE when person_id is null then '%' else '%' + person_id + '%'
IsNULL将空值转换为空字符串,然后您可以只关心字符串,而不关心空值。对于编辑,您需要提供更多信息。已解决:IsNULL(myclum“”)就像atperson_id为null时的情况一样,“%”else“%”+atperson_id+“%”发布一个答案并接受它。或者删除它,因为它仍然不清楚您要的是什么。我刚刚在stackvoerflow中发现了一个bug,如果您放置@它认为您针对的是用户。使用两个@您不能发布您的评论。您不能在两个@后面加上一个字立即。在Meta上发布。它也不会忽略@如果它将自动转到该用户。