Случай, в котором пункт SQL (Oracle) - PullRequest
0 голосов
/ 19 февраля 2020

Я хочу отфильтровать запрос в операторе Where. Я хочу сравнить идентификаторы с 'IN', но только если значение имеет вход. Если этот текст пуст, я не хочу сравнивать. Предотвратить ошибку запроса

ПРИМЕР:

StringProductIDs = ''



WHERE
    ({Issue}.[ServiceRequestId] IN (@StringServiceRequestIDs)) 
    AND ({ServiceRequest}.[Id] IN (@StringServiceRequestIDs))
    AND ({Product}.[Id] IN (@StringProductIDs) OR @StringProductIDs = '')   /* Is this one that i want to prevent*/
    AND EXTRACT(MONTH FROM {Sprint}.[CompleteDate]) = @Month
    AND EXTRACT(YEAR FROM {Sprint}.[CompleteDate]) = @Year

В этом случае я просто хочу отфильтровать thing.id, если значение, переданное в качестве параметра, имеет значение. Если он окажется пустым, я не хочу сравнивать и избегать строки «И»

или попробовать другой подход :). Есть способ выполнить запрос, только если этот вход имеет значение? Если он не имеет значения, он ничего не возвращает. Если значение ввода работает нормально -

Большое спасибо

1 Ответ

0 голосов
/ 19 февраля 2020

Вам нужно OR:

WHERE  (things.active = 1 AND things.state = 2) AND
       (things.id IN (@INPUT) OR @INPUT IS NULL); 
...