电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

MySQL數據庫基礎學習之JSON函數各類操作詳解

瀏覽:44日期:2023-02-18 16:43:55
目錄
  • 前言
  • 一、JSON語法規則
  • 二、JSON函數
    • 1.JSON_CONTAINS(json_doc,value)函數
    • 2.JSON_SEARCH()函數
    • 3.JSON_PRETTY(json_doc)函數
    • 4.JSON_DEPTH(json_doc)函數
    • 5.JSON_LENGTH(json_doc[,path])函數
    • 6.JSON_KEYS(json_doc[,path])函數
    • 7. JSON_INSERT(json_doc,path,val[,path,val] ...)函數
    • 8.JSON_REMOVE(json_doc,path[,path] ...)函數
    • 9.JSON_REPLACE(json_doc,path,val[,path,val] ...)函數
    • 10.JSON_SET(json_doc,path,val[,path,val] ...)函數
    • 11.JSON_TYPE(json_val)函數
    • 12. JSON_VALID(value)函數

前言

很多日常業務場景都會用到json文件作為數據存儲起來,而mysql5.7以上就提供了存儲json的支撐。往常存儲json一般都保留在pg庫或者是hive庫里面,現在mysql有了支持的話基本業務都可以用mysql來實現。現在mysql8.x版本對json字符出處理已經做的非常完善了。現在就讓我們來詳細了解一下關于json數據數據類型mysql都有哪些函數能夠對其進行操作。

該系列文章將按照這個脈絡行文,此系列文章將被納入我的專欄一文速學SQL各類數據庫操作,基本覆蓋到使用SQL處理日常業務以及常規的查詢建庫分析以及復雜操作方方面面的問題。從基礎的建庫建表逐步入門到處理各類數據庫復雜操作,以及專業的SQL常用函數講解都花費了大量時間和心思創作,如果大家有需要從事數據分析或者數據開發的朋友推薦訂閱專欄,將在第一時間學習到最實用常用的知識。此篇博客篇幅較長,值得細讀實踐一番,我會將精華部分挑出細講實踐。博主會長期維護博文,有錯誤或者疑惑可以在評論區指出,感謝大家的支持。

一、JSON語法規則

首先我們還是先復習一遍json數據類型的語法規則,這在我的很多文章都有寫到:

JSON是一個標記符的序列。這套標記符包含六個構造字符字符串數字和三個字面名

JSON是一個序列化的對象數組

  • 數據為 鍵 / 值 (name/value)對;
  • 數據由逗號(,)分隔;
  • 大括號保存對象(object);
  • 方括號保存數組(Array);

可以是對象數組數字字符串或者三個字面值(false、null、true)中的一個。值中的字面值中的英文必須使用小寫。

如:

"code":"100"

對象由花括號括起來的逗號分割的成員構成,成員是字符串鍵和上文所述的由逗號分割的鍵值對組成: {“code”:20,"type":"mysql"}

數組是由方括號括起來的一組值構成:

"datesource":[
{"code":"20", "type":"mysql"},
{"code":"20", "type":"mysql"},
{"code":"20", "type":"mysql"}
]

復習完畢之后我們再來對mysql處理json函數實驗。

二、JSON函數

首先我們創建一個表來進行操作:

create TABLE json_test(	id int not null primary key auto_increment,	content json	);

接下來,向test_json數據表中插入數據。

insert into json_test(content) values("{"name":"fanstuck","age":23,"address":{"province":"zhejiang","city":"hangzhou"}}")

可以使用“->”和“->>”查詢JSON數據中指定的內容。

SELECT content->"$.name" FROM json_test where id =1;

1.JSON_CONTAINS(json_doc,value)函數

JSON_CONTAINS(json_doc,value)函數查詢JSON類型的字段中是否包含value數據。如果包含則返回1,否則返回0。其中,json_doc為JSON類型的數據,value為要查找的數據。

SELECT JSON_CONTAINS(content, "{"name":"fanstuck"}") FROM json_test ;    

2.JSON_SEARCH()函數

SELECT JSON_SEARCH(content ->> "$.address", "all", "nanchang") FROM json_test ;

3.JSON_PRETTY(json_doc)函數

JSON_PRETTY(json_doc)函數以標準的格式顯示JSON數據。

 SELECT JSON_PRETTY(content) FROM json_test ;

4.JSON_DEPTH(json_doc)函數

JSON_DEPTH(json_doc)函數返回JSON數據的最大深度。

 SELECT JSON_DEPTH(content) FROM json_test;

5.JSON_LENGTH(json_doc[,path])函數

JSON_LENGTH(json_doc[,path])函數返回JSON數據的長度。

SELECT JSON_LENGTH(content) FROM json_test;

6.JSON_KEYS(json_doc[,path])函數

JSON_KEYS(json_doc[,path])函數返回JSON數據中頂層key組成的JSON數組。

 SELECT JSON_KEYS(content) FROM json_test;

7. JSON_INSERT(json_doc,path,val[,path,val] ...)函數

JSON_INSERT(json_doc,path,val[,path,val] ...)函數用于向JSON數據中插入數據。

{"age": 23, "name": "fanstuck", "address": {"ip": "192.168.12.12", "city": "hangzhou", "province": "zhejiang"}}

可以看到,JSON_INSERT()函數并沒有更新數據表中的數據,只是修改了顯示結果。

8.JSON_REMOVE(json_doc,path[,path] ...)函數

JSON_REMOVE(json_doc,path[,path] ...)函數用于移除JSON數據中指定key的數據。

 SELECT JSON_REMOVE(content, "$.address.city") FROM json_test WHERE id = 2;

9.JSON_REPLACE(json_doc,path,val[,path,val] ...)函數

JSON_REPLACE(json_doc,path,val[,path,val] ...)函數用于更新JSON數據中指定Key的數據。

SELECT JSON_REPLACE(content,"$.age",20) FROM json_test ;

可以看到,JSON_REPLACE()函數并沒有更新數據表中的數據,只是修改了顯示結果。

10.JSON_SET(json_doc,path,val[,path,val] ...)函數

JSON_SET(json_doc,path,val[,path,val] ...)函數用于向JSON數據中插入數據。

 SELECT JSON_SET(content, "$.address.street", "xxx街道") FROM json_test WHERE id = 1;

11.JSON_TYPE(json_val)函數

JSON_TYPE(json_val)函數用于返回JSON數據的JSON類型,MySQL中支持的JSON類型除了可以是MySQL中的數據類型外,還可以是OBJECT和ARRAY類型,其中OBJECT表示JSON對象,ARRAY表示JSON數組。

 SELECT JSON_TYPE(content) FROM json_test ;

12. JSON_VALID(value)函數

JSON_VALID(value)函數用于判斷value的值是否是有效的JSON數據,如果是,則返回1,否則返回0,如果value的值為NULL,則返回NULL。

 SELECT JSON_VALID("{"name":"binghe"}"), JSON_VALID("name"), JSON_VALID(NULL);

到此這篇關于MySQL數據庫基礎學習之JSON函數各類操作詳解的文章就介紹到這了,更多相關MySQL JSON函數內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: MySQL
主站蜘蛛池模板: 两头忙,井下装载机,伸缩臂装载机,30装载机/铲车,50装载机/铲车厂家_价格-莱州巨浪机械有限公司 | IIS7站长之家-站长工具-爱网站请使用IIS7站长综合查询工具,中国站长【WWW.IIS7.COM】 | 5nd音乐网|最新流行歌曲|MP3歌曲免费下载|好听的歌|音乐下载 免费听mp3音乐 | 北京京云律师事务所| 诸城网站建设-网络推广-网站优化-阿里巴巴托管-诸城恒泰互联 | 宏源科技-房地产售楼系统|线上开盘系统|售楼管理系统|线上开盘软件 | 温湿度记录纸_圆盘_横河记录纸|霍尼韦尔记录仪-广州汤米斯机电设备有限公司 | 华东师范大学在职研究生招生网_在职研究生招生联展网 | 浙江栓钉_焊钉_剪力钉厂家批发_杭州八建五金制造有限公司 | 存包柜厂家_电子存包柜_超市存包柜_超市电子存包柜_自动存包柜-洛阳中星 | 沥青灌缝机_路面灌缝机_道路灌缝机_沥青灌缝机厂家_济宁萨奥机械有限公司 | 电销卡_北京电销卡_包月电话卡-豪付网络 | 众品地板网-地板品牌招商_地板装修设计_地板门户的首选网络媒体。 | 消电检公司,消电检价格,北京消电检报告-北京设施检测公司-亿杰(北京)消防工程有限公司 | 回转支承-转盘轴承-回转驱动生产厂家-洛阳隆达轴承有限公司 | 实验室pH计|电导率仪|溶解氧测定仪|离子浓度计|多参数水质分析仪|pH电极-上海般特仪器有限公司 | 工作服定制,工作服定做,工作服厂家-卡珀职业服装(苏州)有限公司 | 塑料托盘厂家直销-吹塑托盘生产厂家-力库塑业【官网】 | 磁粉制动器|张力控制器|气胀轴|伺服纠偏控制器整套厂家--台灵机电官网 | 山东螺杆空压机,烟台空压机,烟台开山空压机-烟台开山机电设备有限公司 | 煤棒机_增碳剂颗粒机_活性炭颗粒机_木炭粉成型机-巩义市老城振华机械厂 | 蜜蜂职场文库_职场求职面试实用的范文资料大全 | 成都亚克力制品,PVC板,双色板雕刻加工,亚克力门牌,亚克力标牌,水晶字雕刻制作-零贰捌广告 | 结晶点测定仪-润滑脂滴点测定仪-大连煜烁 | 日本细胞免疫疗法_肿瘤免疫治疗_NK细胞疗法 - 免疫密码 | 济南电缆桥架|山东桥架-济南航丰实业有限公司 | 陶瓷加热器,履带式加热器-吴江市兴达电热设备厂 | 北京工业设计公司-产品外观设计-产品设计公司-千策良品工业设计 北京翻译公司-专业合同翻译-医学标书翻译收费标准-慕迪灵 | 温室大棚建设|水肥一体化|物联网系统 | 热风机_工业热风机生产厂家上海冠顶公司提供专业热风机图片价格实惠 | 蒜肠网-动漫,二次元,COSPLAY,漫展以及收藏型模型,手办,玩具的新媒体.(原变形金刚变迷TF圈) | 电缆故障测试仪_电缆故障定位仪_探测仪_检测仪器_陕西意联电气厂家 | 罗氏牛血清白蛋白,罗氏己糖激酶-上海嵘崴达实业有限公司 | 中视电广_短视频拍摄_短视频推广_短视频代运营_宣传片拍摄_影视广告制作_中视电广 | 全自动端子机|刺破式端子压接机|全自动双头沾锡机|全自动插胶壳端子机-东莞市傅氏兄弟机械设备有限公司 | 缠膜机|缠绕包装机|无纺布包装机-济南达伦特机械设备有限公司 | 澳洁干洗店加盟-洗衣店干洗连锁「澳洁干洗免费一对一贴心服务」 干洗加盟网-洗衣店品牌排行-干洗设备价格-干洗连锁加盟指南 | 广西资质代办_建筑资质代办_南宁资质代办理_新办、增项、升级-正明集团 | 河南卓美创业科技有限公司-河南卓美防雷公司-防雷接地-防雷工程-重庆避雷针-避雷器-防雷检测-避雷带-避雷针-避雷塔、机房防雷、古建筑防雷等-山西防雷公司 | 贴片电容代理-三星电容-村田电容-风华电容-国巨电容-深圳市昂洋科技有限公司 | 登车桥动力单元-非标液压泵站-非标液压系统-深圳市三好科技有限公司 |