【问题标题】:Data not return from mysql json data type数据不从 mysql json 数据类型返回
【发布时间】:2017-01-04 06:58:09
【问题描述】:

我通过where条件从mysql的json字段中搜索数据。但没有数据显示。

“attributes_list”的MySql字段名,json类型

我的 json 数据:

{
 "0": 
    {
      "id": "01c93aae-8603-42f3-b097-89357467872a#####ed20eb29-611a-4e5c-a966-c09708c98179", 
      "text": "Canada", 
      "attr_name": "Country"
    }, 
 "1": 
    {
      "id": "01c93aae-8603-42f3-b097-89357467872a#####6e6269a1-afbb-4d5d-b2ee-6d25fe38fec7", 
      "text": "Ontario", 
      "attr_name": "REGION"
    }, 
 "2": 
    {
      "id": "5a0a085e-f3e4-4fbe-9f3e-61cec4836d36#####d81923c9-9532-4375-ba3d-19214ac61c4e", 
      "text": "Lager", 
      "attr_name": "TYPE"
    }, 
 "-1": {"id": "", "text": "", "attr_name": ""}
}

我对mysql的json查询:

当我运行以下查询然后显示数据

SELECT * FROM products where attributes_list->'$[0]."0".text' = 'Canada';

但是当我运行它时没有显示数据

SELECT * FROM products where attributes_list->'$[0]."*".text' = 'Canada'; 

我解释一下我的情况:

在产品表中有 6 行。在产品表中,有一个字段名称属性列表。

该字段为json类型。一个产品有保存多个属性。我的 attribute_list json 格式是

{"0":{"id":"","text":""},"1":{"id":"","text":""}}. 

现在我想搜索 text='Canada' 的位置,然后阅读那些产品信息

【问题讨论】:

    标签: php mysql json jsonschema


    【解决方案1】:

    根据 mySql manual 选择器 $**.text 将被使用。

    [在页面上搜索(路径 $**.b)以到达那里。]

    这将搜索每个文档的第二级,并将返回第二级文本键的值。 所以你的查询会是这样的:

    SELECT * FROM products where attributes_list->'$.*.text' = 'Canada';
    

    我也尝试执行与您在fiddle 中提到的相同任务

    【讨论】:

    • 我已经尝试过您的查询,但这不起作用。我在运行“从产品中选择 json_depth(attributes_list);”时提到的另一件事;这里有显示深度级别 3。
    • 您是否检查了上面更新的查询@SanaulIshaque?
    • 是的,我已经运行更新查询,但没有找到结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-09
    • 2017-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多