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

본문 바로가기
사이트 내 전체검색

db

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

페이지 정보

작성자 서방님 댓글 0건 조회 157회 작성일 06-12-13 20:44

본문

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

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. 정리

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

댓글목록

등록된 댓글이 없습니다.

Total 464건 26 페이지
게시물 검색

회원로그인

접속자집계

오늘
31
어제
302
최대
1,347
전체
155,092
Latest Crypto Fear & Greed Index

그누보드5
Copyright © 서방님.kr All rights reserved.