CREATE PROCEDURE [dbo].[SPPeople]
(
@Name varchar(50) = null,
@Status1 char(1) = '0',
@Status2 char(1) = '0',
@Status3 char(1) = '0'
)
as
SELECT
People.Name, People.Age
FROM
People
WHERE
(People.Name = CASE WHEN @Name is null THEN People.Name ELSE @Name END)
AND
((People.Status1 = CASE WHEN @Status1 = '0' THEN People.Status1 ELSE @Status1 END)
OR
(People.Status2 = CASE WHEN @Status2 = '0' THEN People.Status2 ELSE @Status2 END)
OR
(People.Status3 = CASE WHEN @Status3 = '0' THEN People.Status3 ELSE @Status3 END))
如果参数@Status1
和@Status2
等于1
,查询应该返回一定Status1
或Status2
等于1
,不依赖于Status3
寄存器。在SQL SELECT查询,其中参数1或参数2
但是,当我通过@Status1
和@Status2
作为1
时,上面的查询返回所有寄存器。
这是否查询执行?它似乎缺少最后一行之前的布尔条件(状态2和状态3之间) – AHiggins 2014-10-20 18:24:33
它确实缺失。我添加了'OR',以便执行。 – 2014-10-20 18:47:45