본문 바로가기
  • [성공하는 개발자] - Developer
DataBase/MSSQL

[MSSQL] 숫자 앞에 0 채우기, 자리수 맞추기 (LPAD)

by 세인보이 2022. 11. 14.
728x90

 

SQL Server에서 숫자 앞에 "0"을 채워서 일정한 길이의 문자열을 만들기 위해서는 FORMAT, RIGHT, REPLICATE 함수를 사용하면 된다. SQL Server에는 오라클의 LPAD 함수는 사용할 수 없으므로 아래의 예제를 참고하면 비슷한 효과를 낼 수 있다.

 

FORMAT 함수 사용 (방법1)

SELECT FORMAT(1, '00000')   AS result1
     , FORMAT(12, '00000')  AS result2
     , FORMAT(123, '00000') AS result3

 

FORMAT("수치 값", "채울 값")

FORMAT 함수는 SQL Server 2012 이상에서 사용할 수 있으므로 이하의 버전에서는 아래의 RIGHT, REPLICATE 함수를 사용해야 한다.

 

SELECT FORMAT(1, 'D5')   AS result1
     , FORMAT(12, 'D5')  AS result2
     , FORMAT(123, 'D5') AS result3

 

 

"00000" 대신 D + 반복 횟수를 입력해도 동일한 결과를 얻을 수 있다.

 

 RIGHT 함수 사용 (방법2)

SELECT RIGHT('00000' + CAST(1 AS VARCHAR), 5)   AS result1
     , RIGHT('00000' + CAST(12 AS VARCHAR), 5)  AS result2
     , RIGHT('00000' + CAST(123 AS VARCHAR), 5) AS result3

 

 

RIGHT("채울 값" + CAST("수치 값" AS VARCHAR), "문자열 길이")

조금 복잡해 보이지만 일반적인 프로그래밍에서 많이 사용하는 방법이다.

 

REPLICATE 함수 사용 (방법3)

SELECT REPLICATE('0', 5 - LEN(1)) + CAST(1 AS VARCHAR)     AS result1
     , REPLICATE('0', 5 - LEN(12)) + CAST(12 AS VARCHAR)   AS result2
     , REPLICATE('0', 5 - LEN(123)) + CAST(123 AS VARCHAR) AS result3

 

 

REPLICATE("채울 값", "반복 횟수"  - LEN("수치 값")) + CAST("수치 값" AS VARCHAR)

REPLICATE 함수의 기능을 아주 잘 활용한 방법이지만 쿼리문이 많이 복잡해 보인다.

 

CAST(123 AS VARCHAR) 함수 대신 CONVERT(VARCHAR, 123) 함수를 사용할 수 있다.

 

참고 : https://gent.tistory.com/449

728x90