mysql全面解析json/數組

 更新時間:2022年07月05日 16:28:57   作者:ghostyusheng  
這篇文章主要介紹了mysql全面解析json/數組,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

mysql解析json數組

mysql在5.7開始支持json解析了 也可以解析數組哦!

直接上demo

 SELECT Substr(col, 2, Length(col) - 2), Length(col)
         FROM   (SELECT Json_extract(Json_extract(Json_extract(state, "$.tpl"),"$.items"
                            ), "$[0].url")
               AS col
        FROM   page
        ORDER  BY id DESC
        LIMIT  100) t;

JSON_EXTRACT可以解析sql , tpl就是你json的key值

如果是數組,用$[*].url  或者 $[0].url  獲取全部的value 或者某個下標的url

下面這個demo可以直接復制到sql運行

 select JSON_EXTRACT(JSON_EXTRACT(JSON_EXTRACT('{"tpl":{"items":[{"type":"image","config":{"expandable":true,"linkAble":true},"url":"https://fs.esf.fangdd.net/test/FiZ0OtkhTZoD7fOtkp55SnuLGiKu.png?imageView2/2/w/750","id":1542348252537},{"type":"image","config":{"expandable":true,"linkAble":true},"url":"https://fs.esf.fangdd.net/test/FlR1VDQWEzD406NosLFrJUez4g_X.png?imageView2/2/w/750","id":1542348263477},{"type":"image","config":{"expandable":true,"linkAble":true},"url":"https://fs.esf.fangdd.net/test/FhMuYkWvnoMbv8I1dlQbm1KaX5Kn.png?imageView2/2/w/750","id":1542348269599},{"type":"image","config":{"expandable":true,"linkAble":true},"url":"https://fs.esf.fangdd.net/test/FlgR4IUNElPbcgjN2re_9A8jX30v.png?imageView2/2/w/750","id":1542348276124},{"type":"image","config":{"expandable":true,"linkAble":true},"url":"https://fs.esf.fangdd.net/test/FpXF8ETHxU8aqriiKbsYDjnu2Xd5.png?imageView2/2/w/750","id":1542348282561},{"type":"image","config":{"expandable":true,"linkAble":true},"url":"https://fs.esf.fangdd.net/test/FkUz5m7Jd6kE2slSyreDucozc3XH.png?imageView2/2/w/750","id":1542348288150,"link":"http://www.baidu.com"}],"bottomItems":[],"title":"demo2","description":"","wxLogo":"","bodyStyleInline":{},"bg":"","bgType":"","bottomStyleInline":{},"bottomBg":"","bottomBgType":"","uuid":"aaef8dfe-256a-4559-aec9-95d1fcdcf830","activeItemsName":"items","activeImgType":"","authInfo":{"role_list":[{"name":"test","access_key_list":[]},{"name":"審核人員","access_key_list":[]}],"city_list":[],"userId":3108779,"userName":"zhangyusheng","email":"zhangyusheng@xxx.com","mobile":"123123","trueName":"張昱升","isEmployee":true}}}', "$.tpl"), "$.items"), "$[0].url");

我們來分析一下

原始json為

{
    "tpl":{
        "items":[
            {
                "type":"image",
                "config":{
                    "expandable":true,
                    "linkAble":true
                },
                "url":"https://fs.esf.fangdd.net/test/FiZ0OtkhTZoD7fOtkp55SnuLGiKu.png?imageView2/2/w/750",
                "id":1542348252537
            },
            {
                "type":"image",
                "config":{
                    "expandable":true,
                    "linkAble":true
                },
                "url":"https://fs.esf.fangdd.net/test/FlR1VDQWEzD406NosLFrJUez4g_X.png?imageView2/2/w/750",
                "id":1542348263477
            },
            {
                "type":"image",
                "config":{
                    "expandable":true,
                    "linkAble":true
                },
                "url":"https://fs.esf.fangdd.net/test/FhMuYkWvnoMbv8I1dlQbm1KaX5Kn.png?imageView2/2/w/750",
                "id":1542348269599
            },
            {
                "type":"image",
                "config":{
                    "expandable":true,
                    "linkAble":true
                },
                "url":"https://fs.esf.fangdd.net/test/FlgR4IUNElPbcgjN2re_9A8jX30v.png?imageView2/2/w/750",
                "id":1542348276124
            },
            {
                "type":"image",
                "config":{
                    "expandable":true,
                    "linkAble":true
                },
                "url":"https://fs.esf.fangdd.net/test/FpXF8ETHxU8aqriiKbsYDjnu2Xd5.png?imageView2/2/w/750",
                "id":1542348282561
            },
            {
                "type":"image",
                "config":{
                    "expandable":true,
                    "linkAble":true
                },
                "url":"https://fs.esf.fangdd.net/test/FkUz5m7Jd6kE2slSyreDucozc3XH.png?imageView2/2/w/750",
                "id":1542348288150,
                "link":"http://www.baidu.com"
            }
        ],
        "bottomItems":[
 
        ],
        "title":"demo2",
        "description":"",
        "wxLogo":"",
        "bodyStyleInline":{
 
        },
        "bg":"",
        "bgType":"",
        "bottomStyleInline":{
 
        },
        "bottomBg":"",
        "bottomBgType":"",
        "uuid":"aaef8dfe-256a-4559-aec9-95d1fcdcf830",
        "activeItemsName":"items",
        "activeImgType":"",
        "authInfo":{
            "role_list":[
                {
                    "name":"test",
                    "access_key_list":[
 
                    ]
                },
                {
                    "name":"審核人員",
                    "access_key_list":[
 
                    ]
                }
            ],
            "city_list":[
 
            ],
            "userId":3108779,
            "userName":"zhangyusheng",
            "email":"zhangyusheng@xxx.com",
            "mobile":"23123",
            "trueName":"張昱升",
            "isEmployee":true
        }
    }
}
 
  • $.tpl就是獲取tpl這個鍵key
  • $[0].url就是獲取[{url:1},{url:2}] 這個數組第一個對象的url值 也就是1

mysql json字符串解析成對應字段

字段名 :mobile ,內容:{"contactName":"段XX","contactJobTitle":"待確認","contactMobile":"131XXXXXXX"}。

解決方法:JSON_EXTRACT

執行SQL:

查詢結果:

結果帶引號,并不能真正使用。

解決方法:REPLACE

執行SQL:

查詢結果:

問題解決。

sql語句:

SELECT
REPLACE (
JSON_EXTRACT (mobile, '$.contactName'),
'"',
''
) AS 'contactName',
REPLACE (
JSON_EXTRACT (mobile, '$.contactMobile'),
'"',
''
) AS 'contactMobile',
REPLACE (
JSON_EXTRACT (mobile, '$.contactJobTitle'),
'"',
''
) AS 'contactJobTitle'
FROM
cscw_client
WHERE
id = 'XXXXXXXXXXXXXXX'

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • MySQL修改存儲過程的詳細步驟

    MySQL修改存儲過程的詳細步驟

    這篇文章主要給大家介紹了關于MySQL修改存儲過程的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • mysql創建本地用戶及賦予數據庫權限的方法示例

    mysql創建本地用戶及賦予數據庫權限的方法示例

    這篇文章主要介紹了mysql創建本地用戶及賦予數據庫權限的相關資料,文中的介紹的非常詳細,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-04-04
  • MySQL 基礎常用命令總結

    MySQL 基礎常用命令總結

    這篇文章主要介紹了MySQL 的基礎常用命令,在執行語句的時候,很多命令都是必須記住的,想具體了解的小伙伴請參考下面文章內容
    2021-09-09
  • MySQL數據誤刪除的快速解決方法(MySQL閃回工具)

    MySQL數據誤刪除的快速解決方法(MySQL閃回工具)

    Binlog2sql是一個Python開發開源的MySQL Binlog解析工具,能夠將Binlog解析為原始的SQL,也支持將Binlog解析為回滾的SQL,去除主鍵的INSERT SQL,是DBA和運維人員數據恢復好幫手,下面小編通過教程給大介紹MySQL數據誤刪除的快速解決方法,一起看看吧
    2019-10-10
  • 深入探尋mysql自增列導致主鍵重復問題的原因

    深入探尋mysql自增列導致主鍵重復問題的原因

    前幾天開發的同事反饋一個利用load data infile命令導入數據主鍵沖突的問題,分析后確定這個問題可能是mysql的一個bug,這里提出來給大家分享下。以免以后有童鞋遇到類似問題百思不得其解,難以入眠,哈哈。
    2014-08-08
  • MySQL修改默認引擎和字符集詳情

    MySQL修改默認引擎和字符集詳情

    這篇文章小編主要介紹的是MySQL修改默認引擎和字符集的相關資料,需要的小伙伴請參考下面文章的具體內容,希望能否幫助到您
    2021-09-09
  • MYSQL數據庫導入數據時出現亂碼的解決辦法

    MYSQL數據庫導入數據時出現亂碼的解決辦法

    我是用的最后一種方法,前面三種解決MYSQL導入數據亂碼的方法沒試過,東莞SEO推薦大家直接使用第四種方法處理MYSQL導入中文數據時的亂碼問題。
    2011-01-01
  • MySQL 客戶端不輸入用戶名和密碼直接連接數據庫的2個方法

    MySQL 客戶端不輸入用戶名和密碼直接連接數據庫的2個方法

    MySQL 客戶端不輸入用戶名和密碼直接連接數據庫的2個方法,大家可以測試下。
    2009-07-07
  • 解析:內聯,左外聯,右外聯,全連接,交叉連接的區別

    解析:內聯,左外聯,右外聯,全連接,交叉連接的區別

    本篇文章是對內聯,左外聯,右外聯,全連接,交叉連接的區別進行了詳細的分析介紹,需要的朋友參考下
    2013-07-07
  • Window下Mysql忘記root密碼怎么重置

    Window下Mysql忘記root密碼怎么重置

    這篇文章主要介紹了Window下Mysql忘記root密碼的重置方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-02-02

最新評論

美丽人妻被按摩中出中文字幕