Maison > Article > base de données > MySQL a-t-il un type json ?
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.
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.
{ "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 ?
;
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ête
. 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!