從 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
-