[MSSQL] 숫자 앞에 0 채우기, 자리수 맞추기 (LPAD)
- 데이터베이스/MSSQL
- 2021. 12. 14.
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) 함수를 사용할 수 있다.