我正在尝试获取where子句条件以检查dayname在列数据列表中。例如,如果今天是星期一,并且数据库列具有“星期一,星期二”,则返回True。
ID | Days | Action
1 | 'Monday', 'Tuesday'| Task1
2 | 'Sunday', 'Friday' | Task3
我想知道今天是星期一,然后返回任务1。
SELECT * FROM test_table t where DAYNAME(NOW()) in (t.days)
上面的语句无法获得结果。
我不建议您使用逗号分隔的列表在数据库中存储多个值。正确的方法是规范化数据并将每个值放在related表中的单独记录中。
但是字面上的解决方案您的问题是使用FIND_IN_SET()MySQL函数。它返回值的索引(从1开始);如果str不在strlist中,则返回0。下一个困难是您将值存储在单引号中。因此,在WHERE子句中,必须像
那样对其进行转义。... WHERE FIND_IN_SET('\'Monday\'', Days)
再次,我建议您改为normalize your data。