powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / в where if
10 сообщений из 10, страница 1 из 1
в where if
    #39627849
sqldevelop18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как реализовать условие if в where ? (вместо 1==1 будут применяться значения хранимки)

select * from t
where id=1 and ( if (1==1) name='abc' end if;)
...
Рейтинг: 0 / 0
в where if
    #39627888
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sqldevelop18,
Код: sql
1.
2.
3.
4.
5.
select case when 1=1 then '=' else '<>' end;
 case 
------
 =
(1 row)
...
Рейтинг: 0 / 0
в where if
    #39627914
bdsm_sql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
человек по ходу хочет это:

Код: plsql
1.
2.
select * from t
where id=1 and (not(1==1) or name='abc')
...
Рейтинг: 0 / 0
в where if
    #39627947
sqldevelop18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bdsm_sql,

select * from t where x=1 and a>0 если входящий параметр в хранимке =0

select * from t where x=1 and a=2 если входящий параметр в хранимке =2

думаю как через where реализовать
...
Рейтинг: 0 / 0
в where if
    #39627969
bdsm_sql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если = 1, то не возвращать ничего, или возвращать без доп условий?
...
Рейтинг: 0 / 0
в where if
    #39628063
sqldevelop18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bdsm_sql,

если =1

то

a=1

то есть a в where принимает значение входящего параметра если >0
...
Рейтинг: 0 / 0
в where if
    #39628069
bdsm_sql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
create or replace function hranimka() returns int immutable strict as ...;

select * from t where x=1 and hranimka() = 0 and a>0
union all
select * from t where x=1 and hranimka() > 0 and a=hranimka()
...
Рейтинг: 0 / 0
в where if
    #39628102
sqldevelop18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bdsm_sql,

зачем union?
можно как то в where все прописать?
...
Рейтинг: 0 / 0
в where if
    #39628124
bdsm_sql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно, но не факт что будет индекс использоваться, хотя хз, не проверял

Код: plsql
1.
2.
3.
4.
select * from t where x = 1 and (
  (hranimka() = 0 and a > 0) or
  (hranimka() > 0 and a = hranimka())
)
...
Рейтинг: 0 / 0
в where if
    #39628129
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sqldevelop18bdsm_sql,

зачем union?
можно как то в where все прописать? а чего в where то ?
или вы не скльщик, а мимопроходимец, какабычна ?

напишыте запрос, погоняйте планы.
то же -- с индексами.
навскидку видно, что унион ОЛЛ получше д.б.

но лучше тут уже не жмотится. а плпгскл-ем случаи разгрести. (про вторую хранимку вопросы будут -- а не волатильна ли она, а родители не пьющи ли

хотя если заведомо на клиенте известно. что случаЕв 2, какого хера над оптимайзером измываться ? он для другого сделанный. сделайте 2 хранимки и ветвись на клиенте.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / в where if
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]