Jamie888 Ответов: 2

Как использовать другое значение параметра, если первое пустое


Привет, у меня есть SQL-запрос, в котором я передам либо первый, либо второй параметр. Если first пуст/null, то я буду использовать второе значение параметра в моем предложении WHERE. Но у меня есть одна путаница: как я могу написать свой запрос в предложении WHERE, чтобы удовлетворить свой случай здесь?
Ниже приведен мой сценарий:
DECLARE @p_CustomerName AS VARCHAR(20)
DECLARE @p_CustomerID AS VARCHAR(20)

SET @p_CustomerName = NULL
SET @p_CustomerID = '123ABC'

SELECT
 FirstName
,LastName
FROM
CustomerTable AS CT
WHERE
--Doubts here
--CustomerName and CustomerID consists in 2 different columns, therefore OR clause is not suitable here 


Что я уже пробовал:

Я знаю, что могу использовать здесь оператор IF ELSE, но там будет 2 запроса. Я пытаюсь достичь этого в одном запросе.

2 Ответов

Рейтинг:
14

Peter Leow

Попробовать это:

SELECT FirstName, LastName FROM customertable WHERE
(CustomerName=@p_CustomerName OR @p_CustomerName IS NULL) AND
(CustomerID=@p_CustomerID OR @p_CustomerID IS NULL)


Jamie888

Сэр, благодарю вас за ответ. Он работал, как и ожидалось, хотя и с некоторыми проблемами производительности. В любом случае, спасибо за помощь. Очень ценю это.

Рейтинг:
0

KDGOLE

Привет,

попробовать это :

SELECT FirstName, LastName FROM CustomerTable AS CT
WHERE
CustomerName = CASE WHEN ISNULL(@p_CustomerName, '') = '' THEN CustomerName ELSE ISNULL(@p_CustomerName, '') END
AND CustomerID = CASE WHEN ISNULL(@p_CustomerID, '') = '' THEN CustomerID ELSE ISNULL(@p_CustomerID, '') END