Это будет LIKE
:
select * from test
where day like '%1%'
Предполагается, что в этом столбце нет 10, 11 или 31 дня, в противном случае LIKE
найдет их все, что, вероятно, нечто ты хотел. В этом случае посмотрите, поможет ли %,1,%
(что является простым «решением»).
Но, если дни «7 дней в неделе», исходное утверждение должно быть в порядке.
Если вам нужно сравнить номер сегодняшнего дня со значениями DAY
, то посмотрите, поможет ли это: вам не нужно использовать юлианские даты, функцию MOD
, что бы вы ни планировали сделать, как предлагает Oracle TO_CHAR
D
маска формата, которая возвращает номер дня. Например, сегодня четверг, 10 октября 2019 года. Функция возвращает
SQL> alter session set nls_date_format = 'dd.mm.yyyy';
Session altered.
SQL> select sysdate today,
2 to_char(sysdate, 'd') todays_number
3 from dual;
TODAY T
---------- -
10.10.2019 4
, поэтому вы можете использовать ее в like
:
SQL> with test (key, day) as
2 (select 1, '1,2,3,4' from dual union all
3 select 2, '2,3,4,5' from dual
4 )
5 select key,
6 day,
7 to_char(sysdate, 'd') todays_number
8 from test
9 where day like '%' || to_char(sysdate, 'd') || '%';
KEY DAY T
---------- ------- -
1 1,2,3,4 4
2 2,3,4,5 4
SQL>
Если сегодня была, например, пятница25 октября 2019 года, тогда у вас будет
SQL> with test (key, day) as
2 (select 1, '1,2,3,4' from dual union all
3 select 2, '2,3,4,5' from dual
4 )
5 select key,
6 day,
7 to_char(date '2019-10-25', 'd') todays_number
8 from test
9 where day like '%' || to_char(date '2019-10-25', 'd') || '%';
KEY DAY T
---------- ------- -
2 2,3,4,5 5
SQL>
В принципе, я думаю, что это может сработать.