JSON 字段中类似 MySql 的查询

Jab*_*baa 5 php mysql

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

字段值之一,例如["art", "nature"]

WHERE我想获得具有等效查询介质 LIKE %art%` 的行

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

https://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html

Iho*_*nko 5

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

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

SELECT *
FROM my_table
WHERE CONVERT(medium using 'utf8') LIKE '%art%';
Run Code Online (Sandbox Code Playgroud)


Odd*_*man -3

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