数据不从mysql json数据类型

时间:2017-01-04 06:58:10

标签: php mysql json jsonschema

我有来自mysql的json字段的搜索数据。但是没有数据显示。

MySql字段名称“attributes_list”,即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',然后阅读那些产品信息

1 个答案:

答案 0 :(得分:0)

根据mySql manual选择器$ **。文本将被使用。

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

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

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

此外,我尝试执行上面fiddle

中提到的相同任务