때때로 일부 정보가 json 형식으로 데이터베이스에 저장되는 경우, 특정 키 값만 검색하는 동안 SQL이 느리게 실행됩니다. 꽤 낭비입니다
±—±---------------------------------------------------------------+ | 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" : "农学硕士" }}}
이 mysql 데이터베이스에 대해 생각해 보세요. 빨간색으로 표시된 이름을 선택하고 내용은 위에 표시된 것과 같습니다
뷰를 만들고 이 필드의 이름을 선택하세요. 키: "20071090"은 동적이며 불확실하며 이 위치에 한 번만 표시됩니다. , 먼저 첫 번째 레이어 key==>selects
SELECT ZDLSXM->'$.selects' from VI_YXGR
아래의 값을 가져옵니다. 이 레이어는 동적 키이므로 첫 번째 단계 ZDLSXM->'$를 사용할 수 없습니다. .selects' 메서드를 사용하여 중괄호를 제거한 다음 CONCAT()을 사용하여 아래 아이콘의 빨간색 영역을 삭제했습니다.
SELECT CONCAT("{",substring_index(substring_index(ZDLSXM->'$.selects', '{', -1),"}",1),"}") from VI_YXGR
그런 다음 포장하세요. 1층에서 이 이름을 가져가실 수 있습니다
SELECT SE_ZDLSXM->'$.name' AS ZDLSXM from ( SELECT CONCAT("{",substring_index(substring_index(ZDLSXM->'$.selects', '{', -1),"}",1),"}") as SE_ZDLSXM from VI_YXGR ) sss
위 내용은 mysql에서 json 필드를 제거하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!