SQL 服务器存储过程中的动态 where 条件

Dynamic where condition in SQL Server stored procedure

这是我的 SQL 服务器存储过程

CREATE PROC test_sp
@id int,
@ipVal varchar(20) = null,
@browserName varchar(20) = null
as
begin
select * from users where id=@id order by id desc;
end

我想在此动态更改我的 where 条件。

@ipVal is not null时,我应该把Where条件下的三个参数都传过去。当我的@ipVal is null时,那么我应该在where条件中只传递id=@id

如何在 SQL 服务器存储过程中执行此操作?

您可以将 where 子句更改为:

select * from users 
where id=@id
and (@ipVal is null or (browserName=@browserName and ipval=@ipVal))