从 MySQL 5.7.8 开始,MySQL 支持原生的 JSON 数据类型。
本文测试使用 MySQL 8.0
创建测试表sql 如下:
CREATE TABLE `user_info` (
`id` int(11) NOT NULL,
`result` json NOT NULL,
`create_time` timestamp NULL DEFAULT NULL,
`update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
result 字段存入的格式如:
{
"data": [
{
"point_name": "COM21_J0LAJ10CT301",
"status": 0,
"timestamp": 1572338291408,
"value": 32.3197
},
{
"point_name": "COM21_J0LAJ10CT302",
"status": 0,
"timestamp": 1572338291408,
"value": 0.0
}
],
"timestamp": "2019-10-29 16:38:11"
}
- 根据point_name 查询数据
SELECT * FROM user_info t WHERE JSON_CONTAINS( t.result -> "$.data[*].point_name", JSON_ARRAY( 'COM21_J0LAJ10CT304' ))
- 查询json 字段的keys
SELECT JSON_KEYS( t.result ) FROM user_info t LIMIT 1
-