본문 바로가기

MS-SQL

MSSQL 0 채우기 가장 쉬운방법

SQL Server개발시 0 채우기, 또는 특정문자 채우기를 통한 문서번호 생성은 상당히 자주 사용하게 됩니다. 문서번호를 생성할때 DOC20181201-00001와 같이 문서코드+년월일+n자리형식의 일련번호 조합을 많이 사용하기 때문이죠. 예들 들어 5자리의 일련번호를 만들때, 남는 자릿수는 0으로 채우고 싶다면 어떻게 해야할까요? 이때 사용하는 함수가 REPLICATE입니다.


목표) 00001, 00012, 00123 와 같은 n자릿수 일련번호 생성

사용법) REPLICATE(채울문자, 반복횟수)

채울문자 : 0

총자릿수 : 5

반복횟수 : 총 자릿수 - LEN(넣을 문자)


1. 왼쪽에 문자 채우기

먼저 왼쪽에 0을 채우는 방법입니다. 

SELECT REPLICATE('0', 5 - LEN('1')) + '1'
SELECT REPLICATE('0', 5 - LEN('12')) + '12'
SELECT REPLICATE('0', 5 - LEN('123')) + '123'

0으로 자릿수 채우기(왼쪽) 결과



2. 오른쪽에 문자 채우기 

동일하게 응용해서 오른쪽에 0을 채울수도 있습니다.

SELECT '1' + REPLICATE('0', 5 - LEN('1'))
SELECT '12' + REPLICATE('0', 5 - LEN('12')) 
SELECT '123' + REPLICATE('0', 5 - LEN('123')) 

0으로 자릿수 채우기(오른쪽) 결과


어떠신가요? 쉬우신가요? 전 어렵더군요 @.@


다음과 같이 RIGHT, LEFT함수를 이용하는 방법도 있습니다. 전 개인적으로 이게 더 쉬웠습니다.

SELECT RIGHT(('00000' + '1'), 5)
SELECT RIGHT(('00000' + '12'), 5)
SELECT RIGHT(('00000' + '123'), 5)

SELECT LEFT(('1'+'00000'), 5)
SELECT LEFT(('12'+'00000'), 5)
SELECT LEFT(('123'+'00000'), 5)

RIGHT함수를 활용한 0으로 자릿수 채우기 결과


REPLICATE함수를 왜 만들었을까 하는 의문은 저만 갖는건가요 ^^?


프로젝트의 성공을 기원합니다.