У меня есть таблица SQL Server 2008 со следующей структурой и даннымиДополнительные логические ИЛИ параметры SQL Query
INSERT INTO [ProductDetails]([ProductID],[ProductName],[Vendor],[Category])
VALUES(1,'Milk','V1','Food')
INSERT INTO [ProductDetails]([ProductID],[ProductName],[Vendor],[Category])
VALUES(2,'Milk','V2','Food')
INSERT INTO [ProductDetails]([ProductID],[ProductName],[Vendor],[Category])
VALUES(3,'Banana','V2','Food')
Я хочу, чтобы применить логическое ИЛИ в мои критерии поиска с помощью следующего поиска параметров
DECLARE @ProductName VARCHAR(10)
DECLARE @Vendor VARCHAR(10)
Ожидаемые результаты перечислены ниже в различных сценариях.
---CASE 1
SET @ProductName = NULL
SET @Vendor = NULL
--Expected ProductID = 1,2,3
---CASE 2
SET @ProductName = 'Milk'
SET @Vendor = 'V2'
--Expected ProductID = 1,2,3
---CASE 3
SET @ProductName = NULL
SET @Vendor = 'V2'
--Expected ProductID = 2,3
---CASE 3
SET @ProductName = 'Banana'
SET @Vendor = NULL
--Expected ProductID = 3
---CASE 5
SET @ProductName = 'Banana'
SET @Vendor = 'V2'
--Expected ProductID = 2,3
Единственное решение, о котором я могу думать сейчас, состоит в том, чтобы запускать отдельные запросы следующим образом.
IF как
@ProductName
и@Vendor
являютсяNULL
, выберите все продуктыIF
@ProductName
и@Vendor
являются ненулевым, сделать объединение двух отдельных запросов (запросов на основе@ProductName
стоимости и запроса на основе@Vendor
значение)ЕСЛИ
@ProductName
являетсяNOT null
и@Vendor
являетсяNULL
, выберите результат запроса ба СЭД на@ProductName
значениеIF
@ProductName
является недействительным и@Vendor
являетсяNOT null
, выберите результат запроса на основе@Vendor
значения.
Есть ли лучшее решение, которое можно выполнить в одном запросе, таком как тот, который мы делаем для логического И?
ССЫЛКА: