【问题标题】:MySql like query in JSON fieldJSON字段中的MySql类似查询
【发布时间】:2017-10-12 05:37:21
【问题描述】:

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

其中一个字段值,例如["art", "nature"]

我想获得与查询 WHEREmedium LIKE %art%` 等价的行

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

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

【问题讨论】:

  • 这个数组还是字符串...?
  • 字段是一个数组
  • 中表中的数据如何存储?

标签: php mysql


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2017-08-12
      • 1970-01-01
      • 1970-01-01
      • 2019-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多