溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

mysql數(shù)據(jù)庫(kù)中有沒(méi)有json類(lèi)型

發(fā)布時(shí)間:2020-10-09 17:10:50 來(lái)源:億速云 閱讀:441 作者:小新 欄目:MySQL數(shù)據(jù)庫(kù)

小編給大家分享一下mysql數(shù)據(jù)庫(kù)中有沒(méi)有json類(lèi)型,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

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

MySQL中的JSON類(lèi)型

json是一個(gè)非常好用的數(shù)據(jù)類(lèi)型,在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數(shù)據(jù)庫(kù)中有沒(méi)有json類(lèi)型;
個(gè)人更喜歡用類(lèi)似lambda這種方法畢竟這是一個(gè)有逼格又好看的操作:

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

查詢結(jié)果mysql數(shù)據(jù)庫(kù)中有沒(méi)有json類(lèi)型

代碼分析:
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類(lèi)型 string是不行的。

以上是mysql數(shù)據(jù)庫(kù)中有沒(méi)有json類(lèi)型的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI