반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Visual Studio 2015 삭제
- 업무 자동화
- Selenium 환경
- SQLP
- Visual Studio 2015 강제 삭제
- Selenium 설치
- Vue configureWebpack
- Vue3 configureWebpack
- spring
- .NET Core
- Visual Studio 2015 설치
- MSSQL 동적 쿼리
- Tomcat Error
- 리버스 프록시 예제
- 웹 크롤링
- 프록시 예제
- Nginx Reverse Proxy
- tomcat
- vue3
- vue
- vue.js
- Visual Studio 강제 삭제
- javascript
- 디자인 패턴 사례
- MSSQL 문자열
- 웹 자동화
- Visual Studio 패키지에 실패했습니다.
- Vue.config
- .NET Core Proxy
- Visual Studio 재설치
Archives
- Today
- Total
금백조의 개발 블로그
[MSSQL]행 데이터를 문자열로 합치기 본문
반응형
서론
개발 요구사항 중 테이블에 존재하는 행 문자열 데이터들을 가로로 합쳐서 하나의 문자열로 표현해야 하는 요구사항이 있었습니다. 이 요구사항을 통해 다시 한번 정리하게 된 행 데이터를 문자열로 합치는 방법을 예제를 통해 적어볼까 합니다.
본론
만약 아래와 같이 HOBBY_INFO 라는 취미 정보 테이블이 있다고 하고 한 사람에 대한 취미를 [게임, 악기 연주, 코딩] 형식으로 문자열로 합쳐서 조회해야 하는 요구사항을 가정해보겠습니다.
[HOBBY_INFO] 테이블
WITH절을 사용하여 HOBBY_INFO 임시 테이블 및 데이터를 생성하고 SELECT와 CONCAT을 활용하여 행 데이터를 문자열로 합치는 쿼리를 작성할 수 있습니다.
[행 데이터를 문자열로 합치는 쿼리 예제]
--취미를 가로로 나열할 문자열 변수 @HOBBIES
DECLARE @HOBBIES NVARCHAR(MAX) = '';--선언 및 초기화
WITH HOBBY_INFO AS--취미 정보 테이블 HOBBY_INFO
(
SELECT 'goldswan' AS [NAME],'게임' AS HOBBY
UNION ALL
SELECT 'goldswan' AS [NAME],'악기 연주'
UNION ALL
SELECT 'goldswan' AS [NAME], '코딩'
)
SELECT @HOBBIES = CONCAT(@HOBBIES, HOBBY, ',') FROM HOBBY_INFO;--SELECT과 CONCAT을 이용한 테이블 행 데이터를 문자열로 합치기
--SELECT @HOBBIES = CONCAT(@HOBBIES, HOBBY,',') FROM (SELECT DISTINCT HOBBY FROM HOBBY_INFO) A;--DISTINCT 사용 필요시 Inline View를 활용
SET @HOBBIES = CASE WHEN LEN(@HOBBIES)=0 THEN ''--조회한 데이터가 없을 경우 예외처리
ELSE LEFT(@HOBBIES, LEN(@HOBBIES)-1) END--마지막 ','제거
SELECT @HOBBIES AS HOBBIES;
[실행결과]
데이터 중복 제거를 위해 DISTINCT를 사용해야 할 필요가 있을 경우 위의 예제의 주석처럼 서브 쿼리 Inline View를 활용하여 행 데이터를 문자열로 합칠 수 있습니다.
결론
행 데이터를 문자열로 합치는 방법은 개발을 진행하면서 간간히 필요했던 것으로 기억됩니다. 이번 기회에 정리한 내용을 참고하여 다음에 필요할 때도 활용해야겠습니다!
반응형
'Database > SQL Server(MSSQL)' 카테고리의 다른 글
[MSSQL]SELECT INTO문을 통한 임시테이블 생성(SELECT INTO절) (0) | 2021.03.04 |
---|---|
[MSSQL]PIVOT을 이용하여 세로를 가로로 변환 방법(행 열 변환) (4) | 2021.02.28 |
[MSSQL]CHAR, NCHAR 문자열 자료형 사용시 주의사항 (0) | 2021.02.06 |
[MSSQL] SP_EXECUTESQL로 파라미터를 이용해 동적 쿼리로 테이블 생성 시 이슈사항 및 해결방법 (0) | 2021.02.02 |
[MSSQL]동적 쿼리에서 임시 테이블, 전역 임시 테이블 사용 방법 (0) | 2021.01.31 |