SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » PostgreSQL » Опциональное условие в WHERE
Опциональное условие в WHERE [сообщение #5226] Wed, 17 July 2024 15:53 Переход к следующему сообщению
BRAEDEN в настоящее время не в онлайне  BRAEDEN
Сообщений: 1
Зарегистрирован: July 2024
Junior Member
Всем добрый день!
У меня есть задача - написать скрипт, имеющий в конструкции WHERE опциональные условия. Например:
select *
from table
where age = {age}
, где {age} - это некий параметр, который будет подставлять сервис. Этот параметр является опциональным, т.е. его может не быть и тогда ожидается, что скрипт вернет данные по всем значениям атрибута age
Подскажите пожалуйста, можно ли и что написать в условии скрипта, чтобы он возвращал либо данные по запрошенным возрастам, либо по всем возрастам в случае, если параметр не передан сервисом, т.е. равен NULL?

[Обновления: Wed, 17 July 2024 15:56]

Известить модератора

Re: Опциональное условие в WHERE [сообщение #5252 является ответом на сообщение #5226] Fri, 19 July 2024 13:12 Переход к предыдущему сообщениюПереход к следующему сообщению
BlackEric в настоящее время не в онлайне  BlackEric
Сообщений: 323
Зарегистрирован: June 2022
Senior Member
А скрипт как выполняется и формируется?
Это классический случай для динамического sql.
Если значение параметра не передано, то условие просто не включается в запрос.
Re: Опциональное условие в WHERE [сообщение #5318 является ответом на сообщение #5252] Thu, 08 August 2024 13:27 Переход к предыдущему сообщению
iLinkses в настоящее время не в онлайне  iLinkses
Сообщений: 5
Зарегистрирован: August 2024
Junior Member
BlackEric писал(а) Fri, 19 July 2024 13:12
Это классический случай для динамического sql.
С чего вы взяли, что это классический случай? Для чего использовать динамический запрос, если можно просто проверить параметр на null?
select *
from table
where p_age ISNULL OR age = {p_age}
Предыдущая тема: schedule.submit_job
Следующая тема: Plpgsql. В запросе
Переход к форуму:
  


Текущее время: Sun Sep 08 04:58:58 GMT+3 2024

Общее время, затраченное на создание страницы: 0.01423 секунд