>데이터 베이스 >MySQL 튜토리얼 >MySQL에서 json_extract 함수를 사용하는 방법

MySQL에서 json_extract 함수를 사용하는 방법

WBOY
WBOY앞으로
2023-06-02 20:16:091943검색

    1.json_extract 사용 시나리오 설명

    일반적으로 mysql 데이터베이스의 필드는 쿼리할 때 json 형식의 문자열을 저장해야 하며 매번 꺼내집니다. , 쿼리가 구문 분석되므로 효율성이 떨어지고 더 번거롭습니다.

    다행히 Mysql5.7 이상 버전에서는 키를 통해 값을 쿼리할 수 있는 json_extract 함수를 제공합니다(json 배열 형식인 경우 값을 가져올 수 있음). 아래 첨자를 통해 해당 위치를 알 수 있어 매우 편리합니다.

    2. MySQL json_extract 함수 소개

    2.1 함수 소개

    Mysql5.7 버전 이후 새로운 기능으로 Mysql에서는 JSON 값이 더 이상 문자열 형식으로 저장되지 않습니다. a 문서 요소를 빠르게 읽을 수 있는 내부 바이너리 형식입니다. Json 열을 삽입하거나 업데이트할 때 Json 텍스트가 자동으로 확인됩니다. 확인에 실패한 텍스트는 오류 메시지를 생성합니다. Json 텍스트는 표준 방식으로 생성되며 =, 91eef5681cad6f0cc96f9adeb2931b45, >=, a8093152e673feb7aba1828c43532094, != 및 86c4d2458434386e27ed93617b3195b4.

    2.2 사용법

    저장되는 데이터는 json 문자열입니다(유형은 vachar).

    json에서 특정 필드의 값을 쿼리하려는 경우 사용되는 방법은 JSON_EXTRACT()입니다.

    구문:

    **JSON_EXTRACT(json_doc, path[, path] …)**

    사용 팁:

    • json 문자열이 배열이 아닌 경우 $.Field 이름을 사용하세요. 직접  $.字段名

    • 如果json字符串是数组[Array],则直接使用 $[对应的索引ID]

    2.3 注意事项

    JSON_EXTRACT性能验证 , 通过查看执行计划,验证全部都是全表扫描。
    使用场景:数据量不大json字符串较大则可以采用,数据量较大不建议使用。

    3. 数据验证

    3.1 提取普通json中的值

    说明:

    • 普通字段使用 $.KEY 获取

    • 数组字段使用 $.KEY[index]

    • json 문자열이 배열[Array]인 경우 직접 $[해당 인덱스 ID]

    2.3 Notes

    JSON_EXTRACT 성능 확인을 통해 실행 확인 계획과 검증은 모두 전체 테이블 스캔입니다.
    사용 시나리오: 데이터 양이 적을 경우 json 문자열이 크면 사용할 수 있지만, 데이터 양이 클 경우에는 사용하지 않는 것이 좋습니다. 3. 데이터 확인부터 시작한다는 점 참고하세요. 실제 사용에서는 다음 json 문자열을 해당 테이블 필드로 교체하기만 하면 되지만, 다음과 같은 ETL 변환에 주의하세요. json의 nulling 및 교체가 필요합니다. NULL
    3.1 일반 json에서 값 추출 지침: 가져오려면 일반 필드에 $.KEY를 사용하세요 $를 사용하세요. 배열 필드용 KEY [index] 획득, 인덱스는 0
    "장산" 136- 6666-6666 "basketball " "run" "sing"

    3.2 json 배열

    site_user 테이블 값 추출 태그 ["COMMON"]["VIP"]["VVIP","플래티넘" ]
    id이름
    1 zhangsan
    2 lisi
    3 왕우
    4 zhaoliu

    사용자의 첫 번째 태그 추출:

    select 
    	json_extract('{"name":"zhangsan","tel_no":"136-6666-6666","hobbies":["basketball","run","sing"]}',"$.name") as name,
    	json_extract('{"name":"zhangsan","tel_no":"136-6666-6666","hobbies":["basketball","run","sing"]}',"$.tel_no") as tel_no,
    	json_extract('{"name":"zhangsan","tel_no":"136-6666-6666","hobbies":["basketball","run","sing"]}',"$.hobbies[0]") as hobby_1,
    	json_extract('{"name":"zhangsan","tel_no":"136-6666-6666","hobbies":["basketball","run","sing"]}',"$.hobbies[1]") as hobby_2,
    	json_extract('{"name":"zhangsan","tel_no":"136-6666-6666","hobbies":["basketball","run","sing"]}',"$.hobbies[2]") as hobby_3,
    	json_extract('{"name":"zhangsan","tel_no":"136-6666-6666","hobbies":["basketball","run","sing"]}',"$.hobbies[3]") as hobby_4;
    결과: 태그 "공통"
    id name
    1 장산
    1

    위 내용은 MySQL에서 json_extract 함수를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제