: 제이슨데이터를 관계형데이터로 변환시켜주는 함수입니다.
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 |
+--------+-------+---------+
: 공통테이블식
공통 테이블 표현식은 쿼리 실행 중에만 존재한다는 점에서 일시적입니다.
기본식
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를 관계형 데이터로 변환시켜 가상의 테이블을 만들어서 사용할 수 있다.