这一定是个常见问题,但我还没有找到答案。我在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天,这显然有效。但是在选择多个时显然不起作用。
现在我可以为此做一个沉闷的长篇大论,但可能有更好的解决方法。
请记住,虽然查询已经在相当大的表上进行了正确的连接。如此复杂的答案可能不会因负载而起作用。
答案 0 :(得分:0)
您在此处选择的数据结构,在同一字段中具有多个值的JSON字符串是您的问题的根本原因。
为什么不对它进行标准化。为什么不拆分到具有主表的外键的另一个表,以将用户选择的日期选择保持为独立行。然后,您将获得更好,逻辑和基于SQL的解决方案。