Maison  >  Article  >  base de données  >  MySQL a-t-il un type json ?

MySQL a-t-il un type json ?

青灯夜游
青灯夜游original
2020-10-02 12:03:033590parcourir

mysql est de type json. MySQL a introduit le type de données JSON depuis la version 5.7, qui peut exploiter directement les données json ; mais sous la version 5.7 de MySQL, l'enregistrement des données au format JSON dans le tableau nécessite de s'appuyer sur des types de données tels que varchar ou text.

MySQL a-t-il un type json ?

Type JSON dans MySQL

json est un type de données très simple à utiliser, avant mysql5.7 Les gens utilisent une chaîne pour stocker json, mais il y a un problème : json ne peut pas être manipulé. Après la version 5.7, les données json peuvent être directement manipulées.

  1. Il n'y a rien à dire sur la création, c'est juste du json. Il n'est pas nécessaire d'apporter la longueur. La valeur par défaut est 0
  2. Vous pouvez utiliser l'insertion de chaîne pour les mises à jour et. insertions.
  3. Pour les requêtes, personnellement, je n'aime pas remettre les données pour le traitement en arrière-plan, laissons cela à la base de données. L'exemple est le suivant :
  4. Une certaine table dans. la base de données a un champ content_json, qui contient de telles données !
{
  "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": {}
}

La structure est comme ça, nous voulons interroger l'uuid du bas ! Selon les conditions, vérifiez le bas de la bill. C'est un tableau. La facture à l'intérieur est toujours un tableau. Alors, comment vérifier l'uuid du bas ?
MySQL a-t-il un type json ?;
Personnellement, je préfère utiliser une méthode comme lambda. Après tout, c'est une opération élégante et belle :

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

Résultats de la requêteMySQL a-t-il un type json ?

. Analyse du code :
content_json->'$.bill[].bill[].uuid';

représente le champ content_json
"$" est un symbole obligatoire point pour représenter l'objet
* représente tout

alors le sens du code est d'interroger l'uuid de toutes les factures (seconde) dans le champ content_json pour former un tableau et le renvoyer
où ; suit la condition Cela signifie qu'il y a une certaine valeur. Cette valeur peut être une ou plusieurs
JSON_CONTAINS (champ, paramètre)
le champ doit être la valeur spécifiée à vérifier, telle que content_json->' $.bill[].bill[].uuid' ;
doit être une chaîne de type json, ce qui n'est pas acceptable.

Tutoriel recommandé : Tutoriel vidéo MySQL

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn