【问题标题】:How do I search for a certain attribute in mysql JSON?如何在 mysql JSON 中搜索某个属性?
【发布时间】:2021-03-03 12:45:26
【问题描述】:

我可以使用这个 mysql 查询来搜索属性“颜色”为红色的所有行

SELECT * FROM table WHERE JSON_EXTRACT(`attribute`,'$.color') = 'Red'

我可以使用这个 mysql 查询来搜索属性“颜色”不是红色的所有行

SELECT * FROM table WHERE JSON_EXTRACT(`attribute`,'$.color') != 'Red'

但是,无论颜色如何,我如何搜索找到属性“颜色”的所有行? 以及如何搜索未找到属性“颜色”的所有行?

【问题讨论】:

  • 注意:提供的两种解决方案都只适用于单级 JSON。

标签: php mysql json


【解决方案1】:

使用下一个查询:

SELECT * FROM tbl WHERE JSON_EXTRACT(`attribute`,'$.color') IS NULL ;

SELECT * FROM tbl WHERE JSON_EXTRACT(`attribute`,'$.color') IS NOT NULL ;

fiddle

【讨论】:

    【解决方案2】:
    SELECT val, JSON_CONTAINS(JSON_KEYS(val), '"color"')
    FROM test
    

    fiddle

    您也可以使用常用字符串函数(如LOCATE('"color"', json_column))简单地搜索值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-17
      • 2018-12-21
      • 2015-08-05
      • 2018-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多