Maison > Article > base de données > Comment supprimer le champ json dans MySQL
Parfois, certaines informations sont stockées dans la base de données sous forme json si elles sont trop longues, le SQL s'exécutera plus lentement pendant le processus de récupération si seules certaines valeurs clés sont. récupéré, ce sera du gaspillage
±—±---------------------------------------------------------------+ | id | data | ±—±---------------------------------------------------------------+ | 1 | {“Tel”: “132223232444”, “name”: “david”, “address”: “Beijing”} | | 2 | {“Tel”: “13390989765”, “name”: “Mike”, “address”: “Guangzhou”} | ±—±---------------------------------------------------------------+
select json_extract('{"name":"Zhaim","tel":"13240133388"}',"$.tel");
select get_json_object(i.extra, '$.sale_currency'); select sum(get_json_object(i.extra, '$.sale_price') * i.count) as sale_price;
{ "selects" :{ "20071090" :{ "NN" : 41, "LXFS1" : "12365", "GH" : "20071090", "RZZW" : "办公室主任", "sxzym" : "园林植物与观赏园艺", "ZC" : "副教授", "XGW" : "行政管理后勤", "XB" : "男", "ZZMM" : "中共党员", "ZWZC" : "高级职称", "MZ" : "汉", "CSRQ" : 307123200000, "XL" : "硕士", "selectKey" : "20071090", "XM" : "张三", "GZBM" : "办公室", "PZGW" : "副教授三级岗位", "XW" : "农学硕士" }}}.
Pensez à cette base de données mysql Prenez un nom marqué en rouge et le contenu est comme indiqué dans l'image ci-dessus
Créez une vue et prenez le nom de ce champ Puisque sa clé : "20071090" est dynamique et incertaine, et il n'apparaîtra qu'une seule fois à cet endroit, je prends d'abord La valeur sous le premier calque key==>selects
SELECT ZDLSXM->'$.selects' from VI_YXGR
Sur cette base, prenez un autre calque Puisque ce calque est une clé dynamique, la première étape. La méthode ZDLSXM->'$ ne peut pas être utilisée. J'ai donc choisi la méthode substring_index pour supprimer les accolades, puis j'ai utilisé CONCAT() pour la fusionner dans un nouveau json. Supprimez la zone rouge de l'icône ci-dessous
.SELECT CONCAT("{",substring_index(substring_index(ZDLSXM->'$.selects', '{', -1),"}",1),"}") from VI_YXGR
et ensuite l'emballer Tu peux prendre ce nom au premier étage
SELECT SE_ZDLSXM->'$.name' AS ZDLSXM from ( SELECT CONCAT("{",substring_index(substring_index(ZDLSXM->'$.selects', '{', -1),"}",1),"}") as SE_ZDLSXM from VI_YXGR ) sss
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!