JSON 2차원 , 추가 검색 갱신 삭제 하는 방법

 

사용할 JSON 칼럼 예

{ "1":{ "id":11, "name":"a11"} , "2":{ "id":12, "name":"a12"} , "a 'b":{ "id":13, "name":"a13"}   }

    - 배열 형식 아님

        - 일반적인 배열 형식 은 [ {} , {} ]

    - 검색을 하지 않기 위해 키설정

    - JSON_TABLE 로 조회시 효율을 위해 키를 id로 추가



//-------------------------

* 검색(R)

    JSON_SEARCH를 사용해야 하는데 JSON_SEARCH는 문자열만 검색 가능

    - JSON_TABLE 권장

 

    - 예제

SELECT  t.*     , jt.* 

FROM    test1 AS t  

    ,JSON_TABLE (t.json1,

    '$.*' COLUMNS (         

            rowid FOR ORDINALITY,

            id int PATH '$.id' DEFAULT '0' ON EMPTY DEFAULT '-1' ON ERROR,

            name VARCHAR(255) PATH '$.name' DEFAULT '0' ON EMPTY DEFAULT '-1' ON ERROR

    ) )AS jt    

WHERE

    t.id >= 1  -- GROUP BY t.id;



//----------------------------

* 교체 (CU)

JSON_SET 사용 권장 ( JSON_REPLACE 는 이름 없으면 동작을 안함)

    JSON_SET은 이름이 없으면 추가



* 삭제(D)

JSON_REMOVE(경로)

    - 경로를 아는 경우 사용하는 것이 유리

    - 경로를 모를 경우 JSON_SEARCH를 사용해야 하는데 JSON_SEARCH는 문자열만 검색 가능

 

    

    - 추가, 교체, 삭제 예제)

UPDATE test1 AS t

SET 

    -- t.json1 = JSON_SET(t.json1, '$."2"' , JSON_OBJECT('id', 123 )) -- 교체, 추가

    t.json1 = JSON_REMOVE(t.json1, '$."2"' ) -- 삭제  

WHERE

    t.id = 1;



//------------------------

dev.mysql.com/doc/refman/8.0/en/json-function-reference.html

 

Posted by 코덴스

댓글을 달아 주세요