SQL解析Json欄位

2021-10-02 07:20:27 字數 1189 閱讀 8713

mysql支援原生json型別,使用json資料型別相較於將json格式的字串儲存在string型中的優勢有:

儲存時會自動驗證json文字;

可以優化儲存格式。儲存在json型中的json文字會被轉換成乙個支援快速讀取的文件元素,這樣在使用時不需要再解析文字,並且可以直接通過鍵和索引訪問其中的子物件而無需讀取全部文字。

json型中可儲存的json文字的大小不會超過mysql.ini配置檔案中設定的max_allowed_packet的值。

json_extract()函式用於從json中提取元素,例如:

列名:info

"]}

]]}

select json_extract(info,

'$.info1'

)from table1;

查詢結果:

[["

]}]]

select json_extract(info,

'$.info1[0][0]'

)from table1;

查詢結果:

"

]}

如果要對解析過後的json繼續解析,則在上一步基礎上巢狀json_extract()

select json_extract(json_extract(info,

'$.info1[0][0]'),

'$.grade[0]'

)from table1;

查詢結果:

""
如果要在sql中對解析後的json再進行解析,則需要加上json_unquote函式以去掉escape character:

select json_unquote(json_extract(json_extract(info,

'$.info1[0][0]'),

'$.grade[0]'))

from table1;

查詢結果:

注:

json_extract的等效操作符是->;

json_unquote(json_extract())的等效操作符是->>;

參考:

Hive解析json格式字段

新建hive表 create external table asmp.json test id string,info string row format delimited fields terminated by t lines terminated by n location hdfs nam...

Hive 解析複雜json格式字段

本篇文章中所使用的方法來自部落格hive中的lateral view 與 explode函式的使用,感謝大佬的分享。一.問題背景 資料來源hive資料表結構如下 其中info欄位的資料型別為string格式的複雜json結構,例如 需求現在需要統計每個id 中info欄位所對應的使用者數量,而最關鍵...

JSON資料解析,獲取json下的字段值

在前後端互動中經常需要用到解析json資料,簡單記一下 資料格式如下 var jsondata 而我現在要拿到userdata下面optcode欄位的值 首先將資料轉為json字串格式,再轉json物件,直接拿json下的欄位名來獲取字段值,這裡要將userdata也轉為json物件,就可以拿到需要...