[MSSQL] 여러 행의 컬럼을 합치는 방법
SQL Server에서 여러 행(Row)의 컬럼 값을 하나로 합치기 위해서는 STUFF 함수와 FOR XML PATH 구문을 사용하면 된다. 오라클 SQL에서 XMLAGG, WM_CONCAT, LISTAGG 함수와 비슷한 기능을 수행한다. SQL Server 2017 이상 버전을 사용한다면 STRING_AGG 함수를 사용하면 된다. [MSSQL] STRING_AGG 함수 사용법 (컬럼 문자열 합치기) SELECT a.job , STUFF((SELECT ',' + ename FROM emp WHERE job = a.job FOR XML PATH('') ), 1, 1, '') AS enames FROM emp AS a GROUP BY a.job STUFF("문자열", "시작위치", "문자길이", "치환문자"..
2022. 4. 11.
[MSSQL] STRING_SPLIT 함수, 구분자로 자르기
SQL Server 2016 부터 STRING_SPLIT() 함수가 추가되어 컬럼 문자열의 구분자를 행으로 분리 할 수 있다. 이전 버전까지 사용자 함수를 만들어서 사용했지는 STRING_SPLIT() 함수를 사용하면 쉽게 해결 된다. STRING_SPLIT( "문자열", "구분자" ) | 함수 사용법 SELECT empno , ename , skills , value FROM emp CROSS APPLY STRING_SPLIT(skills, ',') 조회된 skills 컬럼의 쉼표(',') 구분자를 잘라서 해당 개수만큼 행으로 변환한다. 결과 컬럼은 value로 생성된다. SELECT * FROM STRING_SPLIT('Java,Python,C++,C#', ',') FROM절에서 해당 함수를 사용할 ..
2022. 4. 11.
[MSSQL] 문자를 날짜 형식으로 변경 (CONVERT, TO_DATE)
문자(VARCHAR)를 날짜형식(타입)으로 변경하는 방법을 소개한다. 날짜 형식을 문자를 CONVERT 함수에 넣으면 날짜포맷을 인식하고 날짜(Date)형으로 값을 리턴한다. 날짜만 변환을 하고 싶다면 DATE형을 사용하고 날짜와 시간까지 변환하고 싶다면 DATETIME형을 사용하면 된다. DATE : 날짜 DATETIME : 날짜시간 문자타입 -> 날짜타입 변경 CONVERT( [날짜형식], [문자값] ) SELECT CONVERT (DATE, '2022-02-10') , CONVERT (DATE, '2022/02/10') , CONVERT (DATE, '20220210') , CONVERT (DATETIME, '2022-02-10') , CONVERT (DATETIME, '2022-02-10 10:4..
2022. 2. 10.