mysql有沒(méi)有json類型?

mysqljson類型。MySQL從5.7版本開(kāi)始,引入了JSON數(shù)據(jù)類型,可以直接操作json數(shù)據(jù);但MySQL5.7版本以下,在表中保存JSON格式類型的數(shù)據(jù),則需要依靠varchar或者text之類的數(shù)據(jù)類型。

mysql有沒(méi)有json類型?

MySQL中的JSON類型

json是一個(gè)非常好用的數(shù)據(jù)類型,在mysql5.7之前人們都是用String來(lái)儲(chǔ)存json的,但是這樣有個(gè)問(wèn)題就是不能操作json,5.7以后就可以直接操作json數(shù)據(jù)了。

  1. 創(chuàng)建沒(méi)什么好說(shuō)的就是json 不用帶長(zhǎng)度默認(rèn)為0
  2. 更新 、和插入可以用string插入
  3. 查詢、個(gè)人不喜歡把數(shù)據(jù)交給后臺(tái)處理,那就交給數(shù)據(jù)庫(kù)處理吧例子如下:
  4. 數(shù)據(jù)庫(kù)某張表有個(gè)content_json字段,里面有這樣的數(shù)據(jù)!
{   "bill": [     {       "bill": [         {           "id": "C81AEAD03F90000142E81B405F6FADC0",           "uuid": "cfd872541b3b4507a50c2b2eda6bef28",           "billid": "kjdzyljgmzsfzypj",           "pageno": [],           "billver": "V1",           "billname": "新增測(cè)試",           "fjNumber": "",           "trueName": "",           "allPageno": [             {               "top": 13,               "left": 7             }           ],           "billValue": {},           "isOtherZL": "",           "billNumber": "",           "fjTMNumber": ""         },         {           "id": "C81AED69D6400001A07818551D9EBEC0",           "uuid": "05d87c8052cd44209c684407d200b7ec",           "billid": "opztsfpsgd",           "pageno": [],           "billver": "V1",           "billname": "發(fā)票申購(gòu)",           "fjNumber": "",           "trueName": "",           "allPageno": [             {               "top": 13,               "left": 7             }           ],           "isOtherZL": "",           "billNumber": "",           "fjTMNumber": ""         }       ],       "index": "",       "dependBjBill": {         "formula": "",         "keyView": ""       },       "codeCondition": {         "formula": "",         "keyView": ""       },       "billRuleCondition": {         "formula": "",         "keyView": ""       }     },     {       "bill": [         {           "id": "C81AED84903000019B29EAB0196014CE",           "uuid": "0d93fe614d09489cbad8fa5a3d160289",           "billid": "kjdzcwgwht",           "pageno": [],           "billver": "V1",           "billname": "財(cái)務(wù)顧",           "fjNumber": "",           "trueName": "",           "allPageno": [             {               "top": 39,               "left": 7             }           ],           "isOtherZL": "",           "billNumber": "",           "fjTMNumber": ""         }       ],       "index": "",       "dependBjBill": {         "formula": "",         "keyView": ""       },       "codeCondition": {         "formula": "",         "keyView": ""       },       "billRuleCondition": {         "formula": "",         "keyView": ""       }     }   ],   "questions": [],   "relyonCondition": {} }

結(jié)構(gòu)是這樣的,我們要查詢最底層uuid!按條件查bill下是一個(gè)數(shù)組 里面的bill還是一個(gè)數(shù)組那么要查最底層的uuid怎么查呢?
mysql有沒(méi)有json類型?
個(gè)人更喜歡用類似Lambda這種方法畢竟這是一個(gè)有逼格又好看的操作:

SELECT content_json->'$.bill[*].bill[*].uuid'  from  b  WHERE JSON_CONTAINS(content_json->'$.bill[*].bill[*].uuid' ,'["cfd872541b3b4507a50c2b2eda6bef28"]')

查詢結(jié)果mysql有沒(méi)有json類型?

代碼分析:
content_json->’$.bill[].bill[].uuid’ ;

表示content_json字段
“$”是必須符號(hào) 點(diǎn)代表對(duì)象
*代表全部

那么代碼意思就是查詢content_json字段里面全部bill(第一個(gè))中全部bill(第二個(gè))的uuid組成一個(gè)數(shù)組返回;
where后面跟著的條件的意思是 存在某個(gè)值 這個(gè)值可以是一個(gè)也可以是多個(gè)
JSON_CONTAINS(字段,參數(shù));
字段必須是要查的指定值如 content_json->’$.bill[].bill[].uuid’ ;
參數(shù)必須是json類型 string是不行的。

推薦教程:mysql視頻教程

以上就是

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊10 分享
站長(zhǎng)的頭像-小浪學(xué)習(xí)網(wǎng)月度會(huì)員