우선, 테이블 정규화가 필요해 보입니다.
함수 사용에 문제가 없다면? 그대로 사용해도 됩니다.
다만, 함수 사용으로 인해 쿼리가 느리다면?
함수 내부에 비효율은 없는지 검토하고,
함수 대신 다른 방법도 찾아봐야 합니다. (조인 후 그룹바이+LISTAGG)
WITH cmcode AS ( SELECT '01' cd, '서점' nm FROM dual UNION ALL SELECT '02', '백화점' FROM dual UNION ALL SELECT '03', '전통시장' FROM dual UNION ALL SELECT '05', '소형마트' FROM dual UNION ALL SELECT '06', '편의점' FROM dual UNION ALL SELECT '07', '대형마트' FROM dual UNION ALL SELECT '09', '도ㆍ매점' FROM dual UNION ALL SELECT '10', '인터넷' FROM dual UNION ALL SELECT '17', '기타' FROM dual ) , data_t AS ( SELECT 1 pk, '01,03,07,05,10' cd_list FROM dual UNION ALL SELECT 2, '01,03,09' FROM dual ) SELECT a.pk , a.cd_list , LISTAGG(c.nm, ',') WITHIN GROUP(ORDER BY INSTR(a.cd_list, c.cd)) nm_list FROM data_t a , cmcode c WHERE INSTR(a.cd_list, c.cd) > 0 GROUP BY a.pk, a.cd_list ;