讓說我有這個表,簡單的SELECT查詢不EqualTo一個價值
A B
-------
1 A
2 C
3 A
4 NULL
5 B
6 A
我只有在存儲過程的參數。我需要傳遞一個參數@param
。我需要選擇所有等於A
的行或選擇不等於A
的所有行。我只有一個參數@param
。如果@param
= 'A' 與選擇A的所有行如果@param
<> 'A' 選擇具有不等於所有行A.
編輯:
這裏是1點的方法,我已經找到。 不確定哪個方法是最好的一個。
DECLARE @Param VARCHAR(5)='NOt A'
DECLARE @tbl TABLE(A INT,B VARCHAR(5))
INSERT INTO @tbl(A,B)
VALUES
(1,'A'),
(2,'C'),
(3,'A'),
(4,NULL),
(5,'B'),
(6,'A')
SELECT *
FROM @tbl
WHERE 1 =
(
CASE WHEN @param = 'A'
THEN
(
CASE WHEN B = 'A' THEN 1 ELSE 2 END
)
ELSE
(
CASE WHEN (B IS NULL OR B <> 'A') THEN 1 ELSE 2 END
)
END
)
@marc_s,從應用程序中傳遞。應用程序只傳遞A或不A – user960567 2012-02-10 07:46:41
選擇等於'A'或不等於'A'的所有行將導致選擇所有行。這是你真正想要的嗎? – TPete 2012-02-10 07:47:56
@TPete,當應用程序通過A時,我需要選擇所有行與A,反之亦然 – user960567 2012-02-10 07:48:44