Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在一个查询中同时返回null和notnull值_Sql_Null - Fatal编程技术网

Sql 如何在一个查询中同时返回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

我有一个整数字段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 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上发布。它也不会忽略@如果它将自动转到该用户。