powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Варианты запроса
12 сообщений из 12, страница 1 из 1
Варианты запроса
    #39632797
cobalt_frog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,

Код: plsql
1.
create table tmp(a number,b number);


param1 и param2 какие либо значения, по которым надо найти записи таблице tmp.

Код: plsql
1.
2.
3.
4.
5.
select  1
  from  tmp
 where  (a is null  or  param1  is null or a = param1)
   and  (b is null  or  param2  is null or b = param2)
   and  (a = param1 or b = param2)



Есть табилца tmp, в ней значения а и b. Обязательно должно быть либо совпадение a с param1, либо b c param2, либо выполняться оба условия. a,b,param1 и param2 могут быть null.
При этом не может быть, что для для не null значений может быть a<>param1 или b<>param2.
Глаз замылился, может у кого есть способ по лучше представленного мною?
Всем спасибо.
...
Рейтинг: 0 / 0
Варианты запроса
    #39632817
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cobalt_frog,

Похоже Вы ищите что-то такое

Код: plsql
1.
2.
3.
select *
from tmp
where (nvl(:param1,-1) = nvl(a,-1) or nvl(:param2,-1) = nvl(b,-1))


где "-1" - заведомо отсутствующее значение
...
Рейтинг: 0 / 0
Варианты запроса
    #39632824
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
with  tmp(a,b) as (select 1, 1
from dual union all select 1, 2
from dual union all select null, 2
from dual union all select null, 1
from dual union all select 1, null
from dual union all select null, null
from dual
), prm(param1, param2) as ( select * from tmp)
select  prm.*, tmp.*
  from  tmp, prm
 where (a=param1 or b=param2)
   and lnnvl(a<>param1)
   and lnnvl(b<>param2)
order by param1,param2,a,b
;
    PARAM1     PARAM2          A          B
---------- ---------- ---------- ----------
         1          1          1          1
         1          1          1 
         1          1                     1
         1          2          1          2
         1          2          1 
         1          2                     2
         1                     1          1
         1                     1          2
         1                     1 
                    1          1          1
                    1                     1
                    2          1          2
                    2                     2
...
Рейтинг: 0 / 0
Варианты запроса
    #39632943
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximaXXL,

неa, напр все 4 null

.....
stax
...
Рейтинг: 0 / 0
Варианты запроса
    #39632945
cobalt_frog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо
...
Рейтинг: 0 / 0
Варианты запроса
    #39632953
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cobalt_frogПри этом не может быть, что для не null значений может быть a<>param1 или b<>param2.
Можете перефразировать?
...
Рейтинг: 0 / 0
Варианты запроса
    #39632977
cobalt_frog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dshedoocobalt_frogПри этом не может быть, что для не null значений может быть a<>param1 или b<>param2.
Можете перефразировать?

Если a и param1 не null, то они должны быть равны. Аналогично для не null и и param2 должно быть b=param2.

andrey_anonymous дал верный вариант.
...
Рейтинг: 0 / 0
Варианты запроса
    #39632997
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
   (a = param1 and nvl(nvl(b,param2),-1) = nvl(nvl(param2,b),-1))
or (b = param2 and nvl(nvl(a,param1),-1) = nvl(nvl(param1,a),-1))
...
Рейтинг: 0 / 0
Варианты запроса
    #39633450
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
decode(a, param1, 1)=1 or decode(b, param2, 1)=1
...
Рейтинг: 0 / 0
Варианты запроса
    #39633455
Фотография Пылинка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cobalt_frog,
Тут как раз чистил почту,нашел в старом письме, делился с однокашником найденным на прошлой работе (на втором году работы), как раз по теме

Код: plsql
1.
2.
3.
select  тут поля, поля , поля
from  таблицаХХХ
where not (  YYY is null);



Запрос к базовому справочнику, тягается много лет в разных проектах.
...
Рейтинг: 0 / 0
Варианты запроса
    #39633508
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров,

21350879

.....
stax
...
Рейтинг: 0 / 0
Варианты запроса
    #39633531
cobalt_frog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вариант от andrey_anonymous самый кошерный на мой взгляд.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Варианты запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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