在MySQL中實際存儲json串的非json類型字段,查詢時視為json類型字段,從而獲取其中部分屬性值

在遺留的系統(tǒng),可以存在這樣的場景:
非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"
}]
  • 如果我們需要獲取json數(shù)組中的第一個對象,我們可以采用如下的sql。
select id,
       JSON_EXTRACT(histories, '$[0]')
from good;
  • 如果需要獲取json數(shù)組中的第二個對象中的status屬性的值,可以采用如下的sql。
select id,
       JSON_EXTRACT(histories -> '$[1]', '$.status')
from good;
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容