久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

MySQL中JSON使用

 Fengsq501u81r4 2021-06-26

文章目錄

  • 前言

    • 1.創(chuàng)建表和插入數(shù)據(jù):

    • 2.查詢json中的使用字段:

    • 3.json科普:

    • 4.mysql中操作json的函數(shù):

      • 4.1 JSON_ARRAY:生成json數(shù)組,。

      • 4.2 JSON_OBJECT:生成對(duì)象,。

      • 4.3 JSON_CONTAINS:查詢指定數(shù)據(jù)是否存在,。

      • 4.4 JSON_CONTAINS_PATH:查詢指定路徑是否存在,。

      • 4.5 JSON_EXTRACT:查找指定的數(shù)據(jù):

      • 4.6 獲取json中所有的keys:

      • 4.7 JSON_UNQUOTE:去掉 json 值的引號(hào)'

  • 總結(jié)

前言

Mysql在5.7.8開始對(duì)json原生支持,,本篇文章對(duì)mysql中使用json進(jìn)行些簡(jiǎn)單的總結(jié),希望能幫助到使用的朋友,。

參考:
https://blog.csdn.net/weixin_44377973/article/details/107829700?utm_medium=
distribute.pc_relevant.none-task-blog-baidujs_title-0&spm=1001.2101.3001.4242

1.創(chuàng)建表和插入數(shù)據(jù):

CREATE TABLE tb_base_info ( id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, content JSON ); INSERT INTO tb_base_info (content) VALUES ( '{'author': 'Captain&D', 'blog': 'https://www.cnblogs.com/captainad'}' );

2.查詢json中的使用字段:

其中->>為去掉查詢的值的雙引號(hào),,->為帶著雙引號(hào)。
其中:$:表示當(dāng)前正在使用的JSON文檔,.keyName:JSON對(duì)象中鍵名為 keyName 的值,.*:表示 JSON 對(duì)象中的所有 value

SELECT  content ->> '$.blog' FROM tb_base_info

當(dāng)然json字段屬性也是支持過濾的:

WHERE student->'$.id' in (1,5)
WHERE student->'$.id' = 1 or student->'$.id' = 5;

like使用查詢:

where contact ->> '$.QQ' like '25%';

如果存儲(chǔ)的是數(shù)組的話可以支持索引查詢:

SELECT  content ->> '$[0]' FROM tb_base_info

3.json科普:

json的語法規(guī)則:

(1)數(shù)據(jù)為鍵值對(duì)存儲(chǔ)key:val,;(2)數(shù)據(jù)由逗號(hào)分隔,;(3)大括號(hào)保存對(duì)象;(4)中括號(hào)保存數(shù)組,。

json數(shù)字可以是整型或者浮點(diǎn)型,。

json對(duì)象可以包含多個(gè)鍵值對(duì)。

json還可以是數(shù)組的格式,[{},{}],。

json邏輯值:{ “flag”:true }
json可以設(shè)置為null:{ “note”:null }
但是在java中使用fastjson可能會(huì)過濾掉為null的值,。

4.mysql中操作json的函數(shù):

4.1 JSON_ARRAY:生成json數(shù)組。

JSON_ARRAY(val1,val2,val3...)

4.2 JSON_OBJECT:生成對(duì)象,。

JSON_ARRAY(val1,val2,val3...)

4.3 JSON_CONTAINS:查詢指定數(shù)據(jù)是否存在,。

JSON_CONTAINS(json_doc, val[, path])

舉例:

select name from student where json_contains(contact,''15037334666'','$.phone');

結(jié)果說明:包含則返回1,否則返回0,。如果參數(shù)為 NULL 或 path 不存在,,則返回NULL

4.4 JSON_CONTAINS_PATH:查詢指定路徑是否存在。

JSON_CONTAINS_PATH(json_doc, one_or_all, path[, path] ...)

舉例:

select id,name,json_contains_path(contact,'one','$.phone') from student;

說明:存在則返回1,,否則返回0,。one_or_all 只能取值 “one” 或 “all”,one 表示只要有一個(gè)存在即可,,all表示所有的都存在才行

4.5 JSON_EXTRACT:查找指定的數(shù)據(jù):

語法:

JSON_EXTRACT(json_doc, path[, path] ...)

舉例:

select id,name,json_extract(contact,'$.QQ') QQ from student;select id,name,json_extract(contact,'$.QQ','$.wechart') contact from student;

備注:如果抽取出多個(gè)path,,則返回的數(shù)據(jù)生成一個(gè) json array

4.6 獲取json中所有的keys:

JSON_KEYS(json_doc[, path])

舉例:

select id,name,json_keys(contact) contact from student;

4.7 JSON_UNQUOTE:去掉 json 值的引號(hào)' 

JSON_UNQUOTE(val)

舉例:

select id,name,json_unquote(json_extract(contact,'$.QQ')) QQ from student;

總結(jié)

當(dāng)然mysql中還有其他未使用的json函數(shù),但是可能并不會(huì)很常用,,因?yàn)閙ysql的計(jì)算能力很差,,在真正的開發(fā)中我們還是要盡量的減少mysql的計(jì)算,盡可能的把業(yè)務(wù)計(jì)算放到業(yè)務(wù)代碼中取實(shí)現(xiàn),。 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多