반응형

MSSQL 에서 사용하는 행 규합 함수

※ 해당 함수는 SQL Server 2017 이상부터 사용 가능하다.

 

다중 행을 한 행으로 합쳐서 나열하는 함수

특정 속성 (취미 항목, 자산내역 등등) 을 한줄로 표현하기에 적합

 

■ 반환 형식: 문자

STRING_AGG('열', '구분자')

 

 

출처: MS - STRING_AGG

반응형

'SQL 저장소 > 변환' 카테고리의 다른 글

대체 - REPLACE  (0) 2024.06.12
이전 행 & 다음 행 - LAG & LEAD  (0) 2024.06.12
문자열 합치기 - CONCAT&CONCAT_WS  (0) 2024.06.10
단어 위치 찾기 - CHARINDEX  (0) 2024.06.10
문자 자르기 - SUBSTRING 및 간단 심화  (1) 2024.06.10
반응형

MSSQL 에서 사용하는 문자 대체 함수

 

■ 반환 형식: 문자

REPLACE('문자열', '찾을 문자', '변경할 문자')

 

SELECT REPLACE('ABCDEFG', 'BCD', '')	-- AEFG
     , REPLACE('Misterio', 'i', 'y')	-- Mysteryo

 

 

출처: MS - REPLACE

반응형
반응형

MSSQL 에서 사용하는 이전 행 & 다음 행

 

■ 반환 형식: '열' 형식에 따라 변경이 됨.

LAG('열' [, offset] [, default] ) OVER ( [partition by]  order by)

LEAD ('열' [, offset] [, default] ) OVER ( [partition by]  order by)

 

만약 그룹별 이전, 다음 행의 값이 필요하다면 PARTITION BY 를 이용하여 그룹을 지정해주면 된다.

 

처음으로 작업 이미지가 필요할 것 같아 이미지 첨부

LAG 작업 시 단계
LAG 및 LEAD 사용 예제

 

출처: MS - LEAD & LAG

반응형

'SQL 저장소 > 변환' 카테고리의 다른 글

행 규합 - STRING_AGG  (0) 2024.06.13
대체 - REPLACE  (0) 2024.06.12
문자열 합치기 - CONCAT&CONCAT_WS  (0) 2024.06.10
단어 위치 찾기 - CHARINDEX  (0) 2024.06.10
문자 자르기 - SUBSTRING 및 간단 심화  (1) 2024.06.10
반응형

MSSQL 에서 사용하는 다중 문자열 합치기

 

■ 반환 형식: 문자

CONCAT('문자1', '문자2', '문자3', ...)

CONCAT_WS('구분 기호', '문자1', '문자2', '문자3', ...)

 

두 함수 모두 문자열을 합치는 함수이며, 필요에 따라 사용 하면 된다.

 

CONCAT_WS 의 경우 첫번째 인수가 설명상 '구분 기호' 이나 기호만 사용하는 것이 아닌 문자를 사용하도 무방하다.

단. 아래 예시 처럼 문자가 반복이 될 수 있다.

DECLARE @T1 NVARCHAR(20)    = '문자'
DECLARE @T2 NVARCHAR(20)    = '열'
DECLARE @T3 NVARCHAR(20)    = NULL
DECLARE @T4 NVARCHAR(20)    = '합치기'

SELECT CONCAT(@T1, @T2, @T3, @T4)		-- 문자열합치기
     , CONCAT_WS(',', @T1, @T2, @T3, @T4)	-- 문자,열,합치기
     , CONCAT_WS('-', @T1, @T2, @T3, @T4)	-- 문자-열-합치기
     , CONCAT_WS(@T1, @T2, @T2, @T3, @T4)	-- 열문자열문자합치기

 

출처 MS - CONCAT, CONCAT_WS

반응형

'SQL 저장소 > 변환' 카테고리의 다른 글

대체 - REPLACE  (0) 2024.06.12
이전 행 & 다음 행 - LAG & LEAD  (0) 2024.06.12
단어 위치 찾기 - CHARINDEX  (0) 2024.06.10
문자 자르기 - SUBSTRING 및 간단 심화  (1) 2024.06.10
날짜 변환 - CONVERT (DATE&DATETIME)  (1) 2024.06.10
반응형

MSSQL 에서 사용하는 단어 위치 찾기

 

■ 반환 형식: 숫자

CHARINDEX('찾을 단어', '대상 문장&단어' [, '시작위치'])

 

해당 항목은 3번째 파라미터 위치에 따라 값의 변화가 쉽게 일어나며,

결과 값은 항상 숫자(위치 값) 로 떨어진다.

시작 위치로 부터 먼저 발견 되는 위치를 찾기 때문에 찾으려는 단어가 문장 여러 곳에 포진해있을 경우

3번째 파라미터의 값을 잘 맞춰주어야 한다.

 

DECLARE @Text NVARCHAR(200) = '문자 -자르기 -견본'

SELECT CHARINDEX('-', @Text, 1)		-- 4 번째 위치
     , CHARINDEX('-', @Text, 5)		-- 9 번째 위치
     , CHARINDEX('견', @Text, 1)	-- 10 번째 위치

 

 

출처: MS - CHARINDEX

반응형
반응형

MSSQL 에서 문자 자르는 방법

 

■ 반환 형식: 문자

SUBSTRING('문자', '시작 위치', '길이')

 

자를 문자 - 시작 위치 - 자를 글자 수  요 3개가 주 된 항목

간단 심화 까지 한다면 CHARINDEX 등을 통하여 특정 단어를 찾은 후 그 자리에서 일부 문자를 자를 수 있다.

DECLARE @Text NVARCHAR(200) = '문자 -자르기 -견본'

SELECT SUBSTRING(@Text, 1, 3)				-- '문자 '
     , SUBSTRING(@Text, CHARINDEX('-', @Text, 1), 4)	-- '-자르기'
     , SUBSTRING(@Text, CHARINDEX('-', @Text, 5), 3)	-- '-견본'

 

출처: MS - SUBSTRING

반응형

'SQL 저장소 > 변환' 카테고리의 다른 글

대체 - REPLACE  (0) 2024.06.12
이전 행 & 다음 행 - LAG & LEAD  (0) 2024.06.12
문자열 합치기 - CONCAT&CONCAT_WS  (0) 2024.06.10
단어 위치 찾기 - CHARINDEX  (0) 2024.06.10
날짜 변환 - CONVERT (DATE&DATETIME)  (1) 2024.06.10
반응형

MSSQL 에서 날짜 (DATE) 를 문자(VARCHAR) 로 변환 하는 방법

 

■ 반환 형식: 문자

CONVERT(VARCHAR(??), 'DATETIME', ??)

작업 시 VARCHAR 의 길이를 잘 조절 해야 한다. 일반적으로 20 을 두면 대부분 다  소화가 되지만

임의로 자르고 싶을 경우 원하는 길이에 맞게 잘 조절 하면 된다.

 

DECLARE @D DATETIME = GETDATE()		-- 2024-06-10 10:45:30:787

SELECT CONVERT(NVARCHAR(10), @D, 20)	-- 2024-06-10
     , CONVERT(NVARCHAR(7), @D, 20)	-- 2024-06

 

포스팅 기준 2024-06-10 10:45 (월) Azure Synapse SQL 풀 에서 동작

두 자리
연도
네 자리
연도
기본 입력 = 출력 실제 출력
- 0 또는 
100
datetime  smalldatetime의 기본값 mon dd yyyy hh:miAM
(또는 PM)
Jun 10 2024 10:45AM
1 101 미국 1 = mm/dd/yy
101 = mm/dd/yyyy
1 = 06/10/24
100 = 06/10/2024
2 102 ANSI 2 = yy.mm.dd
102 = yyyy.mm.dd
2 = 24.06.10
102 = 2024.06.10
3 103 영국/프랑스 3 = dd/mm/yy
103 = dd/mm/yyyy
3 = 10/06/24
103 = 10/06/2024
4 104 독일어 4 = dd.mm.yy
104 = dd.mm.yyyy
4 = 10.06.24
104 = 10.06.2024
5 105 이탈리아어 5 = dd-mm-yy
105 = dd-mm-yyyy
5 = 10-06-24
105 = 10-06-2024
6 106 - 6 = dd mon yy
106 = dd mon yyyy
6 = 10 Jun 24
106 = 10 Jun 2024
7 107 - 7 = Mon dd, yy
107 = Mon dd, yyyy
7 = Jun 10, 24
107 = Jun 10, 2024
8 또는
 24
108 - hh:mi:ss 10:45:30
- 9 또는 
109
기본값 + 밀리초 mon dd yyyy hh:mi:ss:mmmAM
(또는 PM)
Jun 10 2024
10:45:30:787AM
10 110 USA 10 = mm-dd-yy
110 = mm-dd-yyyy
10 = 06-10-24
110 = 06-10-2024
11 111 일본 11 = yy/mm/dd
111 = yyyy/mm/dd
11 = 24/06/10
111 = 2024/06/10
12 112 ISO 12 = yymmdd
112 = yyyymmdd
12 = 240610
112 = 20240610
- 13 또는 
113
유럽 기본값 + 밀리초 dd mon yyyy hh:mi:ss:mmm
(24시간)
10 Jun 2024
10:45:30:787
14 114 - hh:mi:ss:mmm
(24시간)
10:45:30:787
- 20 또는 
120
ODBC 표준 yyyy-mm-dd hh:mi:ss
(24시간)
2024-06-10
10:45:30
- 21 또는 
25 또는 
121
time, date, datetime2, datetimeoffset
의 ODBC 표준(밀리초 포함) 기본값
yyyy-mm-dd hh:mi:ss.mmm
(24시간)
2024-06-10
10:45:30.787
22 - 미국 mm/dd/yy hh:mi:ss AM
(또는 PM)
06/10/24
10:45:30 AM
- 23 ISO8601 yyyy-mm-dd 2024-06-10
- 126 ISO8601 yyyy-mm-ddThh:mi:ss.mmm
(공백 없음)
2024-06-10
T10:45:30.787
- 127 ISO8601(Z 표준 시간대) yyyy-MM-ddThh:mm:ss.fffZ
(공백 없음)
2024-06-10
T10:45:30.787
- 130 Hijri dd mon yyyy hh:mi:ss:mmmAM  4 ذو الحجة 1445 
10:45:30:787AM
- 131 Hijri dd/mm/yyyy hh:mi:ss:mmmAM  4/12/1445 
10:45:30:787AM

 

출처: MS - CAST&CONVERT

반응형

'SQL 저장소 > 변환' 카테고리의 다른 글

대체 - REPLACE  (0) 2024.06.12
이전 행 & 다음 행 - LAG & LEAD  (0) 2024.06.12
문자열 합치기 - CONCAT&CONCAT_WS  (0) 2024.06.10
단어 위치 찾기 - CHARINDEX  (0) 2024.06.10
문자 자르기 - SUBSTRING 및 간단 심화  (1) 2024.06.10

+ Recent posts