본문 바로가기
Database

[MySQL/mariaDB] 구분자로 잘라서 행으로 반환하자. (feat. json_table())

by 모닝위즈 2022. 5. 20.
반응형

먼저  json_table() 함수를 사용하기 위해서는

mysql >= 8.0.4 / mariadb >= 10.6.0 을 만족해야 한다.

 

아래와 같은 테이블 table_name이 존재하고, 데이터는 아래와 같다고 가정을 함.

select * from table_name tn;

select tn.idx, jb.datas
from table_name tn
join json_table(
    replace(json_array(arrsdata), ',', '","'),
    '$[*]' columns (datas varchar(50) path '$')
) jb;

 

과정은 다음과 같다.

먼저 데이터를 json_array() 함수를 사용하여 데이터를 JSON화한다.

그러면 대략 아래와 같은 모양이 됨.

select json_array(arrsdata) from table_name;

그럼 데이터가 하나의 json이 되고, 이를 다시 replace 함수로 쉼표(,)를 "," 로 변환을 해주면 각각의 분리된 데이터처럼 보이게 된다.

select replace(json_array(arrsdata), ',', '","') from table_name;

select tn.idx, jb.datas
from table_name tn
join json_table(
    replace(json_array(arrsdata), ',', '","'),
    '$[*]' columns (datas varchar(50) path '$')
) jb;

결과는 이미 위 쪽에 보여지고 있음.

 

 

 

역시 json! 

나 곧 스타됨! 

 

죄송

댓글