[postgresql] 다수의 값이 들어가 있는 컬럼을 분리하고자 합니다! 4

by 망구스 [SQL Query] [2022.07.04 09:31:27]


A B C

123123

a, b, c 235dwd
123234 b 2343fdf

안녕하세요! 다수의 값이 들어가 있는 컬럼을 분리하려 하는데 방법을 모르겠어서 질문을 드리게 됐습니다.

위의 표처럼 B컬럼에 a,b,c 값이 들어가 있는 경우가 있는데, 이것을 다른 값들은 유지한채 3개의 행으로 분리하고자 합니다.
아래의 표를 보시면 B열의 a,b,c 값이 분리됨에 따라 나머지 A열과 C열의 값은 유지된채 분리된 형태로 나누고자 하는데요,
어떻게 해야할지 도통 떠오르지 않아 질문 드립니다!!

A B C
123123 a 235dwd
123123 b 235dwd
123123 c 235dwd
123234 b 2343fdf

확인해주시면 감사하겠습니다!!

by 우리집아찌 [2022.07.04 10:02:08]

구글 찾아봤더니.

unnest / string_to_array 함수 조합하시면 될것 같네요.

 


by 망구스 [2022.07.04 12:12:07]

조언 감사합니닷!! 


by 마농 [2022.07.04 10:13:02]
WITH t AS
(
SELECT 123123 a, 'a, b, c' b, '235dwd' c
UNION ALL SELECT 123234, 'b', '2343fdf'
)
SELECT a.a
     , SPLIT_PART(a.b, ', ', b.lv) b
     , a.c
  FROM t a
     , GENERATE_SERIES(1, 9) b(lv)
 WHERE b.lv <= LENGTH(a.b) - LENGTH(REPLACE(a.b, ',', '')) + 1
;

WITH t AS
(
SELECT 123123 a, 'a, b, c' b, '235dwd' c
UNION ALL SELECT 123234, 'b', '2343fdf'
)
SELECT a.a
     , b.b
     , a.c
  FROM t a
     , REGEXP_SPLIT_TO_TABLE(a.b, ', ') b(b)
;

WITH t AS
(
SELECT 123123 a, 'a, b, c' b, '235dwd' c
UNION ALL SELECT 123234, 'b', '2343fdf'
)
SELECT a.a
     , b.b
     , a.c
  FROM t a
     , UNNEST(STRING_TO_ARRAY(a.b, ', ')) b(b)
;

 


by 망구스 [2022.07.04 12:11:46]

와!!! 빠른 답변 정말 감사합니다!!!!!!!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입