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

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

by Sein-JH 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

댓글