숫자를 0으로 채워진 문자열로 만들기 > db

본문 바로가기

db

숫자를 0으로 채워진 문자열로 만들기

작성일 06-12-13 21:11

페이지 정보

작성자서방님 조회 88회 댓글 0건

본문

가끔은 필요 할 수 있는 기법이 아닌가 생각합니다. 특히 연습용 데이터를 테이블에 입력할 때 유용하리라 생각합니다. 팁이라고 하기엔 좀 단순한 주제인것 같네요^^

1. 숫자를 고정된 길이의 문자로 변형하기

다음과 같은 테이블이 있다고 가정을 하겠습니다..

USE SQLWorld
GO

-- 테이블 생성

CREATE TABLE Number (
col1 int
)
GO

-- 샘플 데이터 입력

DECLARE @num int
SET @num = 1

WHILE @num <= 10
BEGIN
INSERT INTO Number VALUES(@num)
SET @num = @num + 1
END

입력된 데이터를 SELECT 문을 통해 확인하면 결과는 다음과 같습니다.

col1
-----------
1
2
3
4
5
6
7
8
9
10

(10개 행 적용됨)

이러한 상황에서 다음과 같은 결과 값을 얻으려고 합니다.

col1
--------------------
0000000001
0000000002
0000000003
0000000004
0000000005
0000000006
0000000007
0000000008
0000000009
0000000010

어떤 방법이 가장 간단하고 좋을까요?

제가 예전에 자주 사용했던 방법은 다음과 같습니다.

SELECT REPLICATE('0', 10 - LEN(CAST(col1 AS varchar(10))))
+ CAST(col1 AS varchar(10)) AS col1
FROM Number

표시하려는 문자가 10자리 이므로 10에서 col1 컬럼의 숫자를 varchar로 변환한 문자의 길이를 빼 나머지를 '0'으로 채워주는 방법입니다.

그런데 다음과 같은 방법을 최근에는 사용합니다.

SELECT RIGHT('0000000000' + CAST(col1 AS varchar(10)), 10) AS col1
FROM Number
GO

이 방법이 훨씬 더 간단하지 않나 생각이 됩니다.

테스트용 데이터에서 고객의 번호를 만들어 내는 경우는 아래와 같이 합니다.

SELECT 'CT' + RIGHT('0000000000' + CAST(col1 AS varchar(10)), 10) AS col1
FROM Number
GO

결과는 다음과 같습니다.

col1
----------------------
CT0000000001
CT0000000002
CT0000000003
CT0000000004
CT0000000005
CT0000000006
CT0000000007
CT0000000008
CT0000000009
CT0000000010

(10개 행 적용됨)

2. 정리

어떠한 결과를 두고 그 방법을 구현하는 방법은 여러 가지가 있습니다. 다양한 방법을 고민해 보고 이를 통해 가장 간단한 방법을 찾는게 좋지 않을까 싶습니다.

댓글목록

등록된 댓글이 없습니다.

게시물 검색
Copyright © 서방님.kr All rights reserved.
PC 버전으로 보기