Mysql8之獲取JSON欄位的值

  • 2019 年 10 月 25 日
  • 筆記

    問題是這樣的,接到一個需求:

        要從其它系統資料庫中導出一些數據,發現其中有個欄位的值是json字元串,而需求要的是該JSON字元串中某個key對應的value值。

    需求有了,這個如果只用SQL來處理,能否實現呢,SQL能否處理JSON數據呢,這個資料庫是Mysql,看了下版本,發現是8.x,Mysql8中有json函數支援json的處理,so開工探索。

List-1

[    {      ...      "key": {        "innerKey": "This is test"        ...      },      ...    }  ]

    欄位的json如List-1所示,對應的用json_extract函數,json_extract(列名稱,'$[0].key.innerKey')這樣就取出innerKey的值了。要注意的是該欄位中不能含有非json字元串的值,不然json_extract會報錯。如下List-2是SQL例子。

List-2

select column1,column2,json_extract(,'$[0].key.innerKey') as column3 from table

Reference

  1. https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html#function_json-extract

(adsbygoogle = window.adsbygoogle || []).push({});