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