MySQL和/或,一切顺利

时间:2014-05-20 14:14:46

标签: mysql

这一定是个常见问题,但我还没有找到答案。我在db中有一个字段,其中包含一周中选定日期的json字符串(荷兰语):

{ "ma":"", "di":"", "wo":"", "do":"", "vr":"", "za":"", "zo":"" }

现在我想查询它。所以我做了:

SELECT * FROM bla 
WHERE (daysofweek LIKE "%ma%" 
OR daysofweek LIKE "%di%" 
OR daysofweek LIKE "%wo%" 
OR daysofweek LIKE "%do%" 
OR daysofweek LIKE "%vr%" 
OR daysofweek LIKE "%za%" 
OR daysofweek LIKE "%zo%")

如果您的客户只选择了1天,这显然有效。但是在选择多个时显然不起作用。

现在我可以为此做一个沉闷的长篇大论,但可能有更好的解决方法。

请记住,虽然查询已经在相当大的表上进行了正确的连接。如此复杂的答案可能不会因负载而起作用。

1 个答案:

答案 0 :(得分:0)

您在此处选择的数据结构,在同一字段中具有多个值的JSON字符串是您的问题的根本原因。

为什么不对它进行标准化。为什么不拆分到具有主表的外键的另一个表,以将用户选择的日期选择保持为独立行。然后,您将获得更好,逻辑和基于SQL的解决方案。