Java简友广场

在MySQL中实际存储json串的非json类型字段,查询时视为

2021-11-18  本文已影响0人  西安法律咨询服务平台与程序员

在遗留的系统,可以存在这样的场景:
非json类型字段,存储着json串。我们在select的时候,期望获取该字段中的部分属性值
例如:

CREATE TABLE IF NOT EXISTS `good` (
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT,
  `histories` LONGTEXT NULL,
  PRIMARY KEY (`id`)
) ENGINE = InnoDB DEFAULT CHARSET=utf8mb4;

我们的good表中histories是一个LONGTEXT类型,非json类型,但它里面存在的json串。例如:

[{"status": "Start", "createdTime": "2021-09-01 11:44:17"},{"status": "End", "createdTime": "2021-09-01 11:44:17"}]

格式化后:

[{
    "status": "Start",
    "createdTime": "2021-09-01 11:44:17"
}, {
    "status": "End",
    "createdTime": "2021-09-01 11:44:17"
}]
select id,
       JSON_EXTRACT(histories, '$[0]')
from good;
select id,
       JSON_EXTRACT(histories -> '$[1]', '$.status')
from good;
上一篇 下一篇

猜你喜欢

热点阅读