Проверьте, есть ли название дня в данных столбца - PullRequest
0 голосов
/ 03 февраля 2020

Я пытаюсь получить условие условия where для проверки имени дня в списке данных столбца. Например, если сегодня понедельник, а в столбце базы данных указано «Понедельник, вторник», верните значение True.

ID | Days               | Action
1  | 'Monday', 'Tuesday'| Task1
2  | 'Sunday', 'Friday' | Task3

Я пытаюсь получить, если сегодня понедельник, а затем вернуть задание 1.

SELECT * FROM test_table t where DAYNAME(NOW()) in (t.days)

Вышеприведенный оператор не работает для получения результата.

1 Ответ

0 голосов
/ 03 февраля 2020

Я НЕ рекомендую использовать список, разделенный запятыми, для хранения нескольких значений в БД. Правильный способ - нормализовать данные и поместить каждое значение в отдельную запись в связанной таблице.

Но буквальное решение вашей проблемы - использовать FIND_IN_SET () MySQL функция. Возвращает индекс значения (на основе 1) или 0, если str отсутствует в strlist.
Следующая трудность заключается в том, что вы храните значения, заключенные в одинарные кавычки. Итак, в предложении WHERE вы должны экранировать его как

... WHERE FIND_IN_SET('\'Monday\'', Days)

Еще раз, я рекомендую вам нормализовать ваши данные .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...