컴퓨터 오라클 문자열을 Group By 로 합치는 WMSYS.WM_CONCAT
2012.08.07 12:19
오라클에서 보통 CONCAT 함수는 컬럼과 컬럼을 붙일 때 쓴다.
SELECT CONCAT(col1, col2, ....) FROM 테이블
하면 결과적으로 SELECT col1 || col2 FROM 테이블 과 같은 뜻이 된다.
하나의 레코드에 있는 여러 컬럼들 혹은 표현식을 붙일 때 쓰는 셈...
그런데...
여러 행(레코드)로 나눠진 값을 붙이는 건 어떻게 할까. 이걸 SQL Query 가 아닌 Pro*C 나 Stored Procedure 에서는
변수에 값 집어넣고 Loop 돌리는 식으로 할텐데, Query 로 한 방에 안되나... 싶어 찾아봤더니...
SELECT col1, WM_CONCAT(col2) FROM 테이블 GROUP BY col1
을 하면 col2 컬럼을 col1 별로 컴마( , )를 붙여서 출력해준다. 컴마가 붙는 게 싫으면
REPLACE(WM_CONCAT(col2), ',', '_')로 하면 컴마 대신에 언더바( _ )가 붙겠지.
덕분에 백업 스크립트 생성 query 만드는데 유용하게 잘 썼다.
SELECT 'TRUNCATE TABLE '
|| table_name
|| ';'
|| CHR(13)
|| 'INSERT INTO BAK_'
|| table_name
|| CHR(13)
|| '('
|| WMSYS.WM_CONCAT(column_name)
|| ')'
|| CHR(13)
|| 'SELECT '
|| WMSYS.WM_CONCAT(column_name)
|| CHR(13)
|| 'FROM '
|| table_name
|| CHR(13)
|| 'COMMIT;'
script
FROM ALL_TAB_COLS col
WHERE col.owner = '오너'
AND col.table_name LIKE '%' || :table_name || '%'
GROUP BY table_name
;
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 | 추천 수 |
|---|---|---|---|---|---|
| 835 | 예송논쟁 | RanomA | 2003.01.14 | 3938 | 0 |
| 834 | 갑자사화와 연산군식의 개혁 | RanomA | 2003.01.14 | 2297 | 0 |
| 833 | 이인화와 영원한 제국 | RanomA | 2003.01.14 | 1636 | 0 |
| 832 |
이상한 신문...
| RanomA | 2003.01.14 | 1023 | 10 |
| 831 | 필요한 건 상상력과 꼼꼼함... 그리고 긴 호흡... | RanomA | 2003.02.02 | 1249 | 0 |
| 830 | 일단 1권 다 읽었음... | RanomA | 2003.02.03 | 1398 | 0 |
| 829 | 추가로 영화와 책의 차이점. | RanomA | 2003.02.04 | 1327 | 0 |
| 828 | 성종이 어우동에게 느꼈던 분노감 | RanomA | 2003.02.11 | 2450 | 0 |
| 827 | 비둘기 가족을 부른 이석이라는 사람... | RanomA | 2003.02.16 | 1571 | 0 |
| 826 | 대한민국의 맘에 안드는 점 하나... | RanomA | 2003.02.19 | 1284 | 0 |
| 825 | 저는 오늘 꽃을 받았어요. [3] | RanomA | 2003.02.23 | 1516 | 0 |
| 824 | 난방보다 냉방이 어려운 이유... | RanomA | 2003.02.24 | 1911 | 0 |
| 823 | 그들이 하고픈 말은... [1] | RanomA | 2003.03.04 | 1210 | 0 |
| 822 | 제로보드와 내 홈피 게시판의 차이... | RanomA | 2003.03.09 | 2271 | 0 |
| 821 |
자료실의 첨부파일 개수가 무한대로...
| RanomA | 2003.03.26 | 1157 | 0 |
| 820 | MySQL 백업관련 명령어 몇 개 | RanomA | 2003.03.28 | 1123 | 0 |
| 819 |
MySQL 매뉴얼
| RanomA | 2003.03.28 | 936 | 14 |
| 818 |
Informix FAQ for Monitor, Tune, Support
| RanomA | 2003.04.08 | 926 | 11 |
| 817 | '근로자의 날'보다는 '노동절'이라고 칭합시다. | RanomA | 2003.04.29 | 981 | 0 |
| 816 | 나이수~~~ 유시민~~~ [2] | RanomA | 2003.04.29 | 1047 | 0 |






