我的表格中有JSON
个名为medium
的列
像["art", "nature"]
我希望获得与查询WHERE
medium LIKE%art%`
提到此链接但无法找到适合此
的解决方案https://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html
答案 0 :(得分:1)
您仍然可以将LIKE
与JSON字段一起使用。如果要在某些常规搜索功能中包含关键字,这是一种有效的解决方案。
到目前为止,我注意到但没有解释的是LIKE
在应用于JSON字段时区分大小写(至少在MySQL 5.7.24中发生)。要解决此问题,您可以将JSON字段转换为字符串,然后使用LIKE
。
SELECT *
FROM my_table
WHERE CONVERT(medium using 'utf8') LIKE '%art%';
答案 1 :(得分:-2)
我建议不要以这种方式使用json类型。首先,JSON列类型不是一个很好的查询对象,它们是一个皮塔饼,这意味着您可能被锁定在一个SQL实现上,而不是另一个。取而代之的是,您可以设置一个单独的表,该表包含一个1:n的关系,每个记录都维护每种介质,或者具有一个包含所有介质的以逗号分隔的字符串值的单列。这样一来,LIKE查询就变得更加轻松,简单和可索引。