mysql - 如何在 MySQL 中搜索 JSON 数据?

标签 mysql json mysql-json

我已在 mysql DB 中插入记录,使用 json 编码 数据类型,现在我必须在 json 编码 数据中进行搜索,但我无法正确获取使用以下 MySql 查询的数据。

SELECT  `id` ,  `attribs_json` 
FROM  `products` 
WHERE  `attribs_json` REGEXP  '"1":{"value":[^"3"$]'

查询结果键等于“1”,值是除“3”以外的任何值

我的数据是:

{"feature":{"1":{"value":"["2","3"]"},
            "2":{"value":["1"]},
            "5":{"value":""},
            "3":{"value":["1"]},
            "9":{"value":""},
            "4":{"value":"\u0633\u0627\u062a\u0646"},
            "6":{"value":""},
            "7":{"value":""},
            "8":{"value":""}
           },
"show_counter":"0",
"show_counter_discount":""
}}

最佳答案

如果你有 MySQL 版本 >= 5.7,那么你可以试试这个:

SELECT JSON_EXTRACT(name, "$.id") AS name
FROM table
WHERE JSON_EXTRACT(name, "$.id") > 3

输出:

+-------------------------------+
| name                          | 
+-------------------------------+
| {"id": "4", "name": "Betty"}  | 
+-------------------------------+


详情请查看 MySQL 引用手册:
https://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html

关于mysql - 如何在 MySQL 中搜索 JSON 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30411210/

相关文章:

javascript - 我无法访问数组中的对象,即使它存在

java - 等效于 @JsonIgnore,但仅适用于使用 Jackson 的 xml 字段/属性转换

json - 使用 Swift 2 的 Alamofire POST 请求

MySQL在数组中按键搜索json值

php - 如何重命名从 Laravel 的查询生成器返回的字段 withCount(又名 $asColumn)

mysql - 如何使用 MySQL aes_encrypt 和 aes_decrypt?

mysql - 删除ruby用户记录

php - 使用 while 循环从数据库中获取值的多个 html 下拉列表

mysql - 将 MySQL JSON 列数组读取为行

mysql - MySQL 5.7 JSON 数据类型可以容纳多少