posted by 구름너머 2006. 4. 11. 13:59

숫자를 문자로 변환시

발생할 수 있는 문제가 있어서 올려 봅니다.

예전에 실수를 했었는데 잊고서 또 반복을 하네요....^^

오라클 함수 중에 단일행 변환함수 to_char가 있는데

그 중에서 숫자를 문자로 변경시 주의할 것이 있습니다.

to_char(숫자, 포맷) 이런 형태로 사용하게 되는데...

3자리이내의 숫자를 앞에 0을 붙여서 문자 3바이트로 만들고자 합니다.

아래의 예를 보면서 차이점을 구분해 보세요.

SELECT '*'||TO_CHAR(10,'000') as amt1,
'*'||to_char(-10,'000') as amt2,
'*'||to_char(+10,'000') as amt3,
'*'||trim(to_char(10,'000')) as amt4,
'*'||ltrim(to_char(10,'000')) as amt5
FROM DUAL;

결과:

AMT1AMT2AMT3AMT4AMT5
* 010*-010* 010*010*010

즉, 앞에 부호용 자리가 있기때문에 음수일 경우는 -를 붙이지만,

양수일 경우는 비록 +를 표시하였더라도 무시하고 스페이스로 되는군여..

따라서 꼭 트림처리를 해주어야 합니다.

LTRIM이나 TRIM이나 둘 중에 하나..^^

'ORACLE' 카테고리의 다른 글

ORA-01027  (0) 2006.04.20
무한로우 생성 쿼리  (0) 2006.04.20
strncmp  (0) 2006.02.03
& 기호 이용하기  (1) 2006.01.20
오라클에서 컬럼 Comments 조회하기.  (0) 2005.12.22