ホームページ  >  記事  >  データベース  >  mysqlにはjson型がありますか?

mysqlにはjson型がありますか?

青灯夜游
青灯夜游オリジナル
2020-10-02 12:03:033488ブラウズ

Mysql には json 型があります。 MySQL はバージョン 5.7 以降、JSON データを直接操作できる JSON データ型を導入しましたが、MySQL バージョン 5.7 より前では、JSON 形式のデータをテーブルに保存するには、varchar や text などのデータ型に依存する必要があります。

mysqlにはjson型がありますか?

#MySQL の JSON 型

json は、mysql5.7 より前の非常に使いやすいデータ型です。 json を保存するために string を使用しますが、json を操作できないという問題がありましたが、5.7 以降では json データを直接操作できるようになりました。

    作成については何も言うことはありません。json だけです。長さを指定する必要はありません。デフォルトは 0
  1. 更新や更新には文字列の挿入を使用できます。挿入.
  2. クエリ、個人的にはデータを引き渡すのは好きではありません。バックグラウンド処理については、データベースに任せましょう。例は次のとおりです:
  3. データベース内の特定のテーブルcontent_json フィールドにはそのようなデータが含まれています。
  4. {
      "bill": [
        {
          "bill": [
            {
              "id": "C81AEAD03F90000142E81B405F6FADC0",
              "uuid": "cfd872541b3b4507a50c2b2eda6bef28",
              "billid": "kjdzyljgmzsfzypj",
              "pageno": [],
              "billver": "V1",
              "billname": "新增测试",
              "fjNumber": "",
              "trueName": "",
              "allPageno": [
                {
                  "top": 13,
                  "left": 7
                }
              ],
              "billValue": {},
              "isOtherZL": "",
              "billNumber": "",
              "fjTMNumber": ""
            },
            {
              "id": "C81AED69D6400001A07818551D9EBEC0",
              "uuid": "05d87c8052cd44209c684407d200b7ec",
              "billid": "opztsfpsgd",
              "pageno": [],
              "billver": "V1",
              "billname": "发票申购",
              "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": "财务顾",
              "fjNumber": "",
              "trueName": "",
              "allPageno": [
                {
                  "top": 39,
                  "left": 7
                }
              ],
              "isOtherZL": "",
              "billNumber": "",
              "fjTMNumber": ""
            }
          ],
          "index": "",
          "dependBjBill": {
            "formula": "",
            "keyView": ""
          },
          "codeCondition": {
            "formula": "",
            "keyView": ""
          },
          "billRuleCondition": {
            "formula": "",
            "keyView": ""
          }
        }
      ],
      "questions": [],
      "relyonCondition": {}
    }
構造は次のようになります。一番下の uuid をクエリしたいのです。条件に従って確認してください

請求書の下の請求書は配列です、中の請求書も配列のままです、では一番下のuuidを確認するにはどうすればよいでしょうか?
;mysqlにはjson型がありますか? 個人的には、ラムダに似たメソッドを使用することを好みます。結局のところ、これはスタイリッシュで美しい操作です:

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

mysqlにはjson型がありますか?

コード分析:

content_json->'$.bill[
].bill[].uuid' ;

は content_json フィールドを表します

"$" は必須ですオブジェクトを表すシンボル ポイント
* すべてを表します

コードの意味は、content_json フィールド内のすべての請求書 (2 番目) の uuid をクエリして配列を形成し、それを返すことです。条件の後に続く場所 特定の値があることを意味します。この値は 1 つまたは複数にすることができます


JSON_CONTAINS (フィールド, パラメーター);
フィールドはチェックされる指定された値である必要があります例: content_json->' $.bill[].bill[
].uuid' ; パラメーターは json タイプの文字列である必要がありますが、これは受け入れられません。
推奨チュートリアル:

mysql ビデオ チュートリアル

以上がmysqlにはjson型がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。