mysql取json数组中的数据

取数的逻辑主要是:如果是数组,那就先算好取第几个数,取数据时记得加上下标:

 `JSON_UNQUOTE(JSON_EXTRACT(data, '$[0].details[0]'))`

如果不是数组,取key即可

JSON_UNQUOTE(JSON_EXTRACT(data, '$[0].sp_status'))  

1、取json数组中倒数一个数据

  JSON_EXTRACT(sp_record, CONCAT('$[', JSON_LENGTH(sp_record) - 1, ']'))     data

2.取多个嵌套数据

  JSON_UNQUOTE(JSON_EXTRACT(apply_data, '$[0].contents[2].value[0].text'))   leaver
select sp_no,
       sp_name,
       applyer,
       apply_time,
       JSON_UNQUOTE(JSON_EXTRACT(data, '$[0].details[0].approver.userid'))                            approver,
       JSON_UNQUOTE(JSON_EXTRACT(data, '$[0].details[0].sptime'))                                  approver_time,
       leaver,
       JSON_UNQUOTE(JSON_EXTRACT(data, '$[0].sp_status'))                                             sp_status
from (
         SELECT sp_no,
                sp_name,
                apply_time,
                JSON_UNQUOTE(JSON_EXTRACT(applyer, '$.userid')) AS                         applyer,
                JSON_EXTRACT(sp_record, CONCAT('$[', JSON_LENGTH(sp_record) - 1, ']'))     data,
                JSON_UNQUOTE(JSON_EXTRACT(apply_data, '$[0].contents[2].value[0].text'))   leaver,
                sp_record
         FROM sp_no_info
         WHERE sp_name LIKE '%離職帳號處理申請%'
     ) t1;

你可能感兴趣的:(mysql,mysql,json,数据库)