Необязательный параметр x раз - PullRequest
0 голосов
/ 17 июня 2020

Я застрял на том, что многим здесь может показаться легким. Я ищу способ отфильтровать результаты запроса с дополнительными параметрами для того же поля.

Пусть у меня есть таблица с COUNTRY (США, Великобритания) и TOWN (NY, DALLAS, LONDON, LIVERPOOL, MANCHESTER) .

select COUNTRY, TOWN from MyTable where COUNTRY = :1 AND (TOWN = :2 OR TOWN = :3)

Первый параметр обязателен. Два других не являются обязательными.

select COUNTRY, TOWN from MyTable where COUNTRY = :1 
and (
    TOWN = case when :2 is null then TOWN end 
    OR TOWN = case when :3 is null then TOWN end
)

не работает.

Как мне сделать с этими необязательными параметрами?

Большое спасибо заранее

Ответы [ 2 ]

2 голосов
/ 17 июня 2020

Вам понадобится что-то вроде следующего:

select COUNTRY, TOWN 
  from MyTable 
 where COUNTRY = :1 
   AND ((TOWN = :2 OR :2 is null)
         OR (TOWN = :3 OR :3 is null))
0 голосов
/ 17 июня 2020

Это то, что вы хотите?

where COUNTRY = :1 and
      ( (:2 is null and :3 is null) or TOWN in (:2, :3))

Обычно вы хотите избегать выражений case в предложении where. И часто регулярное логическое выражение проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...