본문 바로가기
프로그래밍/TSQL

[MSSQL] 숫자 '0'으로 채우기(How to show leading zeroes in MSSQL)

by 정리 습관(★arranging★) 2021. 1. 20.
728x90

How to show leading zeroes in Excel using a custom number format : =TEXT(값,포맷) 

이건 많이들 아시는 내용이죠?

숫자를 문자로 만들때 지정한 수만큼 앞에 0을 채우고 싶을 때, 아래와 같은 방법을 사용합니다.

RIGHT(포맷 + convert(VARCHAR,숫자),자리수 )

--6자리 문자열일 경우
select RIGHT('00000' + convert(VARCHAR,@I),6 )

엑셀에서 포맷에는 5자리에 한정하고싶으면 '00000' 6자리라면 '000000'을 입력한것과 마찬가지로

포맷에는 자리수 만큼의 0을 넣어주고 숫자를 문자열에 이어 붙여줍니다 그리고 그 문자를 오른쪽 기준으로 잘라주면 원하는 자리수 만큼의 0이 나옵니다.

사실 앞에 0의 수는 뒤에 자리수보다 1작거나 크면 얼마가 들어가든 상관없습니다.

원리는 다음과 같습니다.

 

RIGHT 함수를 적용하면 아무리 TEXT로 생성된 결과가 길어도 그길이 만큼만 잘리기 때문에 

앞의 0문자열에 붙여넣은 숫자 문자열이 오른쪽 기준으로 맞춰집니다.

윈도우를 적용한것과 같은 효과로 0을 편하게 채울수 있습니다. 

동일하게 CAST를 이용해서

RIGHT(포맷 + CAST(숫자 AS VARCHAR),자리수 )

로 사용해도 결과는 동일합니다.

 

DECLARE @I INT
SET @I = 1
select RIGHT('00000' + convert(VARCHAR,@I),6 )

SET @I = 11
select RIGHT('00000' + convert(VARCHAR,@I),6 )

SET @I = 111
select RIGHT('00000' + convert(VARCHAR,@I),6 )

SET @I = 1111
select RIGHT('00000' + convert(VARCHAR,@I),6 )

SET @I = 11111
select RIGHT('00000' + convert(VARCHAR,@I),6 )

SET @I = 111111
select RIGHT('00000' + convert(VARCHAR,@I),6 )

SET @I = 1111111
select RIGHT('00000' + convert(VARCHAR,@I),6 )

You can make it with concatenate '0' series string and convert number string and use right function as much as you cut.

댓글