Допустим, у меня есть эта таблица,
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
)