create procedure sp1
(
@p1 int = null
)
as
begin
select f1, f2, f3
from table1;
end
如何添加"其中"只有当@ p1不为空时才选择查询(其中f1 = @ p1)的子句?如果@ p1为null则返回所有行!
答案 0 :(得分:1)
试试这个。 where clause
仅在@p1 is not null
SELECT f1,
f2,
f3
FROM dbo.table1
WHERE @p1 IS NOT NULL
AND f1 = @p1
如果要在@ p1为空时返回所有值,则只返回ISNULL
函数。如果@ p1为Not Null
,则会返回f1=@p1
值,否则将返回所有值。试试这个
SELECT f1,
f2,
f3
FROM dbo.table1
WHERE f1 = isnull(@p1,f1)
答案 1 :(得分:1)
create procedure dbo.sp1
(
@p1 int = null
)
as
begin
select f1, f2, f3
from dbo.table1 where(@p1 is not null and f1=@p1)
end
OR
您可以使用
此处查询如果@p1
为空,则返回所有行(因为true
时@ p1返回NULL
create procedure dbo.sp1
(
@p1 int = null
)
as
begin
select f1, f2, f3
from dbo.table1 where(@p1 is null OR f1=@p1)
end
答案 2 :(得分:1)
如果@ p1为null,下面将返回所有内容,如果有值,则会应用该条件。
WHERE @p1 is NULL OR f1=@p1