※ 기본적으로 개인적인 앎에 대한 메모를 위한 공간입니다.
일을 하다보면 컬럼을 문자열로 지정하고 값은 숫자로 넣을 때가 있다.
왜 그렇게 했는지는 모르겠다. 아마 어떤 거룩한 뜻이 있었던거 같기도 한데 머 일단 넘어가자.
예를 들어 TEMP라는 테이블에 CODE_INDEX 라는 컬럼이 있고, 이 컬럼은 VARCHAR2(2) 라고
하자, 그 컬럼에 값을 1,2,3...30 까지 순서대로 값을 넣었다고 한다면 일반적으로 우리가
SELECT CODE_INDEX FROM TEMP 라고 했을때 기대하는 결과물은
CODE_INDEX
1
2
...
10
11
..
30
이와 같은 결과물일 것이다. ORDER BY CODE_INDEX ASC 를 하던 말이다.
하지만 문자열로 지정되어 있는 컬럼은 SELECT를 해보면
CODE_INDEX
1
10
11
...
2
21
22
...
30
이렇게 나타난다. 원하던 결과물과는 좀 다르다.
해결하는 방법은 컬럼을 NUMBER(?)와 같이 바꾸는 방법이 좋겠으나. 일단 그렇게 바꾸는게
손쉽지 않은 결정이라면 간단하게 TO_NUMBER 를 사용하는 방법이 있다.
to_number( string1, [ format_mask ], [ nls_language ] )
string1 is the string that will be converted to a number.
format_mask is optional. This is the format that will be used to convert string1 to a number.
nls_language is optional. This is the nls language used to convert string1 to a number.
Applies To:
- Oracle 8i, Oracle 9i, Oracle 10g, Oracle 11g
즉, 예를 들면 SELECT CODE_INDEX FROM TEMP ORDER BY TO_NUMBER(CODE_INDEX) ASC;
머 이런식으로 하면 된다는.... 간단한데?
'DataBase > Oracle' 카테고리의 다른 글
[Oracle Database] 테이블 삭제 (0) | 2013.02.13 |
---|---|
[Oracle Database] MERGE INTO구문 사용법 (0) | 2013.02.13 |
[Oracle Database] Rownum구문 사용법 (0) | 2013.02.13 |
[Oracle Database] 임시테이블 사용 (0) | 2013.02.13 |
[Oracle Database] NVL함수 사용 중 유의점 (0) | 2013.02.13 |