undermuz
@undermuz
Full-Stack Developer

Mysql. Как выбрать из диапазона?

В таблице "C" есть поле "month_week"; в нем перечислены числа месяца : "12, 20, 30"

Нужен запрос который бы выбирал все записи из таблицы "C", у которых в "month_week" содержится сегодняшнее число

Такой запрос не работает (В поле month_day перечислены все числа месяца для проверки):

SELECT * FORM C WHERE DAYOFMONTH( CURDATE() ) IN C.month_day


Такой работает:

SELECT * FORM C WHERE DAYOFMONTH( CURDATE() ) IN (20, 21, 22)


Я подозреваю что IN не работает со стрингом.. А как по другому?

В чем проблема? Заранее спасибо!
  • Вопрос задан
  • 2239 просмотров
Решения вопроса 1
undermuz
@undermuz Автор вопроса
Full-Stack Developer
Нашел сам - FIND_IN_SET

В данном случае:
SELECT * FORM C WHERE FIND_IN_SET( DAYOFMONTH( CURDATE( ) ) , month_day )
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
kashey
@kashey
Программирую большую половину жизни
Правильно найти нужное в "12, 20, 30" на самом деле сложно - легко найти в ",12,20,30," -> where month_day like concat('%,',DAYOFMONTH( CURDATE( )),',%')
Вот только никакие индексы тут не работают, и эта чтука будет сильно тупить - спасет только нормализация БД или Closure tables(они же кишки)
Хотя день месяца можно и на битовом уровне закодировать - из там как раз 32
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы