MSSQL을 사용하다 보면 숫자 값을 특정 자리수로 맞추기 위해 앞에 '0'을 채워야 하는 경우가 많습니다. 예를 들어, 주문번호나 고객번호를 5자리로 통일하고 싶다면, 한 자리 숫자는 '00001'과 같은 형식으로 변환해야 합니다. 이번에는 MSSQL에서 숫자를 0으로 채우는 다양한 방법을 소개하고, 실전에서 유용하게 활용할 수 있도록 예제와 함께 설명하겠습니다.
목차
FORMAT()
함수 활용 (SQL Server 2012 이상)RIGHT()
와REPLICATE()
함수 활용 (모든 버전에서 가능)STR()
함수 활용 (숫자 -> 문자 변환)실전 적용 예제
고객번호 자동 생성 시 활용
주문번호 생성
제품 코드 일괄 변경
개인적인 견해
1. FORMAT()
함수 활용 (SQL Server 2012 이상)
MSSQL 2012부터 FORMAT()
함수를 활용하면 간단하게 숫자를 0으로 채울 수 있습니다.
SELECT FORMAT(7, '00000') AS FormattedNumber;
결과:
00007
이 방법은 간결하고 가독성이 뛰어나지만, 성능이 상대적으로 낮을 수 있으므로 대량 데이터 처리에는 주의해야 합니다.
2. RIGHT()
와 REPLICATE()
함수 활용 (모든 버전에서 가능)
REPLICATE()
함수는 특정 문자열을 반복하는 기능을 제공하며, RIGHT()
함수를 함께 사용하면 원하는 길이만큼 0을 채울 수 있습니다.
SELECT RIGHT(REPLICATE('0', 5) + CAST(7 AS VARCHAR), 5) AS FormattedNumber;
결과:
00007
이 방법은 MSSQL의 모든 버전에서 사용할 수 있으며, FORMAT()
함수보다 성능이 뛰어난 장점이 있습니다.
3. STR()
함수 활용 (숫자 -> 문자 변환)
STR()
함수를 사용하면 숫자를 특정 길이의 문자열로 변환할 수 있습니다. 하지만 기본적으로 공백이 채워지므로, 이를 REPLACE()
로 처리할 필요가 있습니다.
SELECT REPLACE(STR(7, 5), ' ', '0') AS FormattedNumber;
결과:
00007
이 방법도 MSSQL의 모든 버전에서 사용할 수 있으며, 간단한 변환 작업에 적합합니다.
4. 실전 적용 예제
4.1. 고객번호 자동 생성 시 활용
SELECT 'CUST-' + RIGHT(REPLICATE('0', 6) + CAST(CustomerID AS VARCHAR), 6)
AS CustomerCode
FROM Customers;
4.2. 주문번호 생성
SELECT 'ORD-' + FORMAT(OrderID, '00000') AS OrderNumber FROM Orders;
4.3. 제품 코드 일괄 변경
UPDATE Products
SET ProductCode = RIGHT(REPLICATE('0', 8) + CAST(ProductID AS VARCHAR), 8);
MSSQL에서 숫자를 0으로 채우는 방법은 여러 가지가 있지만, 사용 목적과 성능을 고려하여 적절한 방법을 선택하는 것이 중요합니다. FORMAT()
함수는 직관적이지만 대량 데이터 처리 시 성능이 떨어질 수 있으므로, RIGHT()
+ REPLICATE()
조합이 실전에서는 더 적합할 수 있습니다. 또한, 데이터 정렬이나 인덱싱에 영향을 줄 수 있으므로, 0을 채운 값이 실제 숫자로 사용될 필요가 없는 경우에만 적용하는 것이 바람직합니다.
댓글 쓰기