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