programing

쉼표로 구분된 SQL(Maria DB) 문자열을 행으로 분할

goodsources 2023. 1. 3. 21:48
반응형

쉼표로 구분된 SQL(Maria DB) 문자열을 행으로 분할

다음과 같은 컬럼이 있습니다.

names
John, Mary
Joseph
Eleanor, Sophia, Dani

그리고 다음 출력을 원합니다.

names
John
Mary
Joseph
Eleanor
Sophia
Dani

또한 SUBSTRING_INDEX 함수도 포함해야 합니다.

재귀 CTE를 사용할 수 있습니다.

with recursive cte as (
      select '            ' as name, concat(names, ',') as names, 1 as lev
      from t
      union all
      select substring_index(names, ',', 1),
             substr(names, instr(names, ',') + 2), lev + 1
      from cte
      where names like '%,%'
     )
select name
from cte
where lev > 1;

여기 db<>fiddle이 있습니다.

다음 옵션 중 하나는 재귀 쿼리를 사용합니다.

 with recursive
    data as (select concat(names, ', ') names from mytable),
    cte as (
        select 
            substring(names, 1, locate(', ', names) - 1) word,
            substring(names, locate(', ', names) + 2) names
        from data
        union all
        select 
            substring(names, 1, locate(', ', names) - 1) word,
            substring(names, locate(', ', names) + 2) names
        from cte
        where locate(', ', names) > 0
    )
select word from cte

DB Fielen 데모:

| word || :------ || 존 || 조셉 || 엘리너 || 메리 || 소피아 || 다니 |

언급URL : https://stackoverflow.com/questions/64454071/sql-maria-db-split-string-separated-by-comma-to-rows

반응형