【问题标题】:JSON_CONTAINS not supported in mysql version 5.1.73mysql 版本 5.1.73 不支持 JSON_CONTAINS
【发布时间】:2018-06-27 09:09:32
【问题描述】:

我在查找参数为JSON 格式的where 子句的记录时遇到了一些问题。例如,JSON 列的值类似于 ["1","2","3"]。当我运行where JSON_CONTAINS(tags, '["1"]') 时,它会引发错误。

我想问的是如何在每个JSON 列中获取所有具有 1 值的记录?也许我可以使用PHP,如果没有办法使用低版本的mysql。请任何知道这样做的人都可以帮助我。之前谢谢你。

这是表格记录的示例:

    id | name    | tags
    ---+---------+------------
    1  | Jason   | ["1","2"]
    2  | Michael | ["4"]
    3  | Sarah   | ["1","3"]
    4  | Lucy    | ["2"]

我想在标签列中显示 JasonSarah,它们的值为 1

【问题讨论】:

  • 我高度怀疑 mysql 5.1 有任何 json 支持
  • @Johnny000 我在 5.1 和 5.0 中尝试了不支持的功能。
  • 只有mysql >= 5.7才可用
  • @Johnny000 是的,它只在 mysql >= 5.7 中可用,所以我询问另一种实现方式。
  • 哇,对不起,我看错标题了

标签: php mysql json


【解决方案1】:

您可以尝试使用LIKE 来检查该字段是否包含结果;

SELECT * FROM jsondata WHERE tags LIKE '%"1"%'

但是,as outlined in this other answer 在以这种方式读取 JSON 时,您可能必须考虑转义字符和编码。

【讨论】:

  • 如果值包含 ["1","51"] 它会如何找到 1 或者它也会找到 51?
  • 不,它只会找到 1,因为您在 1 周围有引号。
猜你喜欢
  • 1970-01-01
  • 2018-09-11
  • 1970-01-01
  • 2022-12-09
  • 2021-04-12
  • 2018-02-15
  • 2020-02-13
  • 2013-11-10
  • 2012-08-22
相关资源
最近更新 更多