Php JSON字段中的类MySql查询

Php JSON字段中的类MySql查询,php,mysql,Php,Mysql,我的表中有名为medium的JSON类型列 字段值之一,如[“艺术”、“自然”] 我想得到与queryWHEREmedium类似的行,比如%art%` 参考了此链接,但找不到合适的解决方案 我建议不要以这种方式使用json类型。首先,JSON列类型不适合查询,它们是pita,这意味着您可能会被锁定到一个SQL实现而不是另一个SQL实现。相反,您可以设置一个单独的表,该表包含与维护每个介质的每个记录的1:n关系,或者具有一个列,该列具有与所有介质的逗号分隔字符串值。这使得LIKE查询变得更容易、更

我的表中有名为
medium
JSON
类型列

字段值之一,如
[“艺术”、“自然”]

我想得到与query
WHERE
medium类似的行,比如%art%`

参考了此链接,但找不到合适的解决方案


我建议不要以这种方式使用json类型。首先,JSON列类型不适合查询,它们是pita,这意味着您可能会被锁定到一个SQL实现而不是另一个SQL实现。相反,您可以设置一个单独的表,该表包含与维护每个介质的每个记录的1:n关系,或者具有一个列,该列具有与所有介质的逗号分隔字符串值。这使得LIKE查询变得更容易、更简单,并且可以索引。

您仍然可以对JSON字段使用
LIKE
。如果您想在某些通用搜索功能中包含关键字,这是一个有效的解决方案

到目前为止,我注意到的是,
LIKE
在应用于JSON字段时是区分大小写的(至少在MySQL 5.7.24中是这样)。为了解决这个问题,您可以将JSON字段转换为字符串,然后像一样使用

SELECT *
FROM my_table
WHERE CONVERT(medium using 'utf8') LIKE '%art%';

此字段是数组还是字符串…?字段是数组如何将数据存储在介质表中?