[MYSQL]JSON_TABLE , JSON_CTE

해내면 그만!XX·2022년 4월 23일
0

JSON_TABLE

: 제이슨데이터를 관계형데이터로 변환시켜주는 함수입니다.

set @json='
[
  {"name":"Laptop", "color":"black", "price":"1000"},
  {"name":"Jeans",  "color":"blue"}
]';

select * from json_table(@json, '$[*]' 
  columns(
   name  varchar(10) path '$.name', 
   color varchar(10) path '$.color',
   price decimal(8,2) path '$.price' ) 
) as jt;

+--------+-------+---------+
| name   | color | price   |
+--------+-------+---------+
| Laptop | black | 1000.00 |
| Jeans  | blue  |    NULL |
+--------+-------+---------+

JSON_CTE

: 공통테이블식
공통 테이블 표현식은 쿼리 실행 중에만 존재한다는 점에서 일시적입니다.

기본식

WITH cte_name (column_list) AS (
    CTE_query_definition 
)

-먼저 선택적 열 목록 다음에 CTE의 이름을 지정합니다.
-둘째, WITH절의 본문 내에서 결과 집합을 반환하는 쿼리를 지정합니다. CTE 이름 뒤에 열 목록을 명시적으로 지정하지 않으면 의 선택 목록이 CTE_query_definitionCTE의 열 목록이 됩니다.

WITH JSON_CTE AS(                                  
     SELECT *                    
       FROM A,              
              JSON_TABLE(json, '$[*]' COLUMNS( 
                 B int  PATH '$.C',          
                 C VARCHAR(10) PATH '$.C')      
              ) T                                                                 
       WHERE                       
 ) 

이렇게 두개를 같이 사용하면 JSONData를 관계형 데이터로 변환시켜 가상의 테이블을 만들어서 사용할 수 있다.

0개의 댓글