숫자형 데이터 타입
숫자형 데이터 타입#
Altibase는 다음의 숫자형 데이터 타입을 지원한다.
- BIGINT
- DECIMAL
- DOUBLE
- FLOAT
- INTEGER
- NUMBER
- NUMERIC
- REAL
- SMALLINT
BIGINT#
흐름도#
구문#
BIGINT
설명#
8 바이트 정수형 데이터 타입이다.
C언어의 long(64 bit 시스템에서) 또는 long long(32 bit 시스템에서)과 동일하다.
범위: -263 + 1(-9223372036854775807) ~ 263 – 1(9223372036854775807)
DECIMAL#
흐름도#
구문#
DECIMAL [(precision[, scale])]
설명#
DECIMAL은 NUMERIC 데이터 타입과 동일하다.
DOUBLE#
흐름도#
구문#
DOUBLE
설명#
8 바이트 부동 소수점 숫자형 데이터 타입이다.
C언어의 double과 동일한 데이터 타입이다.
FLOAT#
흐름도#
구문#
FLOAT [(precision)]
설명#
-1E-120에서 1E+120까지 내의 부동 소수점 숫자 데이터 타입이다.
Precision은 정밀도 표시하기 위해 부동 소수점 숫자의 가수를 유효숫자 표기법으로 저장하는 데 사용되는 유효숫자의 자릿수이다.
Precision의 범위는 1에서 38까지이며, 39번째 자릿수에서 값이 반올림된다. Precision이 생략되면 기본값으로 38이 설정된다.
INTEGER#
흐름도#
구문#
INTEGER
설명#
4 바이트 크기의 정수형 데이터 타입이다.
C언어의 int와 동일한 데이터 타입이다.
-2,147,483,647에서 2,147,483,647까지의 정수값을 가질 수 있다.
NUMBER#
흐름도#
구문#
NUMBER [(precision, scale)]
설명#
NUMERIC 데이터 타입의 alias이다. 단, precision과 scale이 명시되지 않으면 FLOAT데이터 타입과 동일하게 취급된다. FLOAT 데이터 타입은 39번째 자릿수에서 값이 반올림된다.
NUMERIC#
흐름도#
구문#
NUMERIC [(precision, scale)]
설명#
NUMERIC은 Precision과 scale을 가지는 숫자형 데이터 타입으로 precision 만큼의 유효 숫자와 scale 만큼의 소수점 이하 정밀도를 가지는 고정 소수점형이다. FLOAT 데이터 타입이 실수를 표현하는 형식인 부동 소수점 형식인 반면 NUMERIC 데이터 타입은 precision과 scale이 모두 생략되면 precision은 38, scale은 0인 정수를 표현하는 고정 소수점형으로 사용된다.
- Precision은 1부터 38까지의 값을 명시할 수 있다.
- Scale은 -84에서 128까지의 값을 명시할 수 있다.
- Precision이 생략되면 기본값으로 38이 설정된다.
- Scale이 생략되면 기본값으로 0이 설정된다.
다음은 각각 정의된 NUMERIC 타입의 칼럼에 입력 값이 1234567.89일때의 변환된 값을 보여준다.
NUMERIC 타입 | 변환 값 |
---|---|
NUMERIC | 1234568 |
NUMERIC(9) | 1234568 |
NUMERIC(9, 2) | 1234567.89 |
NUMERIC(9, 1) | 1234567.9 |
NUMERIC(6) | precision 초과 |
NUMERIC(7, -2) | 1234500 |
NUMERIC(7, 2) | precision 초과 |
REAL#
흐름도#
구문#
REAL
설명#
4 바이트 크기의 부동 소수점형이다.
C언어의 float과 동일한 데이터 타입이다.
SMALLINT#
흐름도#
구문#
SMALLINT
설명#
2 바이트 크기의 정수형 데이터 타입이다.
C언어의 short와 동일한 데이터 타입이다.
-215 + 1(-32,767)에서 215 - 1(32,767) 까지의 정수값을 가질 수 있다.
숫자형 데이터 형식#
TO_CHAR 나 TO_NUMBER 등의 타입 변환 함수를 사용할 때 숫자형 데이터에 대하여 다음과 같이 형식을 지정할 수 있다. 숫자 데이터 형식은 하나 이상의 숫자를 표시하는 요소로 구성된다. 이장에서는 각각의 요소와 관련된 데이터 형식의 예를 설명한다.
, (쉼표)#
설명#
지정한 위치에 쉼표를 출력한다. 쉼표는 여러 번 사용할 수 있다.
제한사항#
쉼표는 숫자의 끝, 마침표의 오른쪽, 또는 숫자의 맨 앞자리에 올 수 없다.
예제#
iSQL> SELECT TO_CHAR (1234, '99,99') FROM dual;
TO_CHAR (1234, '99,99')
---------------------------
12,34
1 row selected.
iSQL> SELECT TO_NUMBER ( '12,34', '99,99') FROM dual;
TO_NUMBER ( '12,34', '99,99')
--------------------------------
1234
1 row selected.
. (마침표)#
설명#
지정한 위치에 마침표를 추가로 반환한다.
제한사항#
한 숫자 내에서 마침표는 한번만 사용할 수 있다.
예제#
iSQL> SELECT TO_CHAR (1.234, '99.999') FROM dual;
TO_CHAR (1.234, '99.999')
-----------------------------
1.234
1 row selected.
iSQL> SELECT TO_NUMBER ( '1.234', '99.999') FROM dual;
TO_NUMBER ( '1.234', '99.999')
---------------------------------
1.234
1 row selected.
$#
설명#
숫자 앞에 $ 기호를 붙인다.
예제#
iSQL> SELECT TO_CHAR (123, '$9999') FROM dual;
TO_CHAR (123, '$9999')
--------------------------
$123
1 row selected.
iSQL> SELECT TO_NUMBER ( '$0123', '09$99') FROM dual;
TO_NUMBER ( '$0123', '09$99')
--------------------------------
123
1 row selected.
0(숫자 0)#
설명#
정수 부분의 유효 자리수가 실제 숫자의 자리수 보다 많을 경우 실제 숫자 앞에 0을 채워서 반환한다. 그 외의 특성은 9와 같다.
예제#
iSQL> SELECT TO_CHAR (123, '0999') FROM dual;
TO_CHAR (123, '0999')
-------------------------
0123
9(숫자 9)#
설명#
출력할 숫자의 자릿수를 숫자 9를 이용해서 표시한다. 실제 숫자의 자릿수 보다 9의 개수가 더 많으면 앞에 공백문자를 출력하여 길이를 맞추고, 정수 부분의 9의 개수가 실제 숫자보다 더 적으면 숫자의 길이만큼 #를 출력한다. #의 개수는 사용자가 지정한 형식에 쓰인 문자의 개수 + 1(부호문자)이다.
9사이에 오는 마침표는 숫자의 정수 부분과 소수 부분을 구분하여 출력하게 한다.
첫 번째 인자에 소수가 있는데 사용자가 지정한 형식에 소수를 표현하는 부분이 없거나, 더 적으면 반올림해서 사용자가 지정한 형식의 소수 부분의 길이에 맞춘다.
예제#
iSQL> SELECT TO_CHAR (123, '99999') FROM dual;
TO_CHAR (123, '99999')
--------------------------
123
iSQL> SELECT TO_CHAR (123.55, '999') FROM dual;
TO_CHAR (123.55, '999')
---------------------------
124
1 row selected.
iSQL> SELECT TO_CHAR (123.4567, '999999') FROM dual;
TO_CHAR (123.4567, '999999')
--------------------------------
123
1 row selected.
iSQL> SELECT TO_CHAR (1234.578, '9999.99') FROM dual;
TO_CHAR (1234.578, '9999.99')
---------------------------------
1234.58
1 row selected.
iSQL> SELECT TO_CHAR (1234.578, '999.99999') FROM dual;
TO_CHAR (1234.578, '999.99999')
-----------------------------------
########
1 row selected.
iSQL> SELECT TO_NUMBER ( '123', '99999') FROM dual;
TO_NUMBER ( '123', '99999')
------------------------------
123
1 row selected.
iSQL> SELECT TO_NUMBER ( '1234.58', '9999.99') FROM dual;
TO_NUMBER ( '1234.58', '9999.99')
------------------------------------
1234.58
1 row selected.
FM#
설명#
출력 문자열의 왼쪽 부분의 공백이나 0을 제거한다.
예제#
iSQL> select to_char(00123.100,'99999.999') from dual;
TO_CHAR(00123.100,'99999.999')
----------------------------------
123.100
1 row selected.
iSQL> select to_char(00123.100,'FM99999.999') from dual;
TO_CHAR(00123.100,'FM99999.999')
------------------------------------
123.100
1 row selected.
B#
설명#
결괏값이 0일 경우, 0을 공백(Blank)으로 반환한다.
예제#
iSQL> SELECT TO_CHAR (0.4, 'B9') FROM T1;
TO_CHAR (0.4, 'B9')
-----------------------
1 row selected.
C#
설명#
ISO 통화 기호(NLS_ISO_CURRENCY 프로퍼티에 설정된 값)를 지정한 위치에 반환한다.
예제#
iSQL> SELECT TO_CHAR (4000, 'C9999') FROM dual;
TO_CHAR (4000, 'C9999')
---------------------------
KRW4000
1 row selected.
D#
설명#
소수점 문자(NLS_NUMERIC_CHARACTER 프로퍼티에 설정된 값)를 지정한 위치에 반환한다. 기본값은 마침표(.)이다.
제한사항#
숫자 형식을 명시할 때 한 개의 소수점 문자만 포함할 수 있다.
예제#
iSQL> SELECT TO_CHAR (24.06, '99D99') FROM dual;
TO_CHAR (24.06, '99D99')
----------------------------
24.06
1 row selected.
iSQL> SELECT TO_CHAR (206, '999D99') FROM dual;
TO_CHAR (206, '999D99')
---------------------------
206.00
1 row selected.
EEEE#
설명#
입력 받은 숫자를 지수 표기법을 이용하여 표기한다.
제한사항#
EEEE는 항상 오른쪽 끝에 와야 한다. 단 S, PR, MI보다는 왼쪽에 오는 것이 가능하다. 쉼표와 같이 사용할 수 없다. TO_NUMBER 함수에서 사용할 수 없다.
예제#
iSQL> SELECT TO_CHAR (1234, '9.9EEEE') FROM dual;
TO_CHAR (1234, '9.9EEEE')
-----------------------------
1.2E+03
1 row selected.
G#
설명#
그룹 구분자(NLS_NUMERIC_CHARACTER 프로퍼티에 설정된 값)를 지정한 위치에 반환한다. 하나의 숫자형 데이터 형식에 그룹 구분자를 여러 번 지정할 수 있다.
제약사항#
그룹 구분자는 하나의 숫자형 데이터 형식에서 소수점 문자 또는 마침표의 오른쪽에 올 수 없다.
예제#
iSQL> SELECT TO_CHAR (2534.3, '999G999D99') FROM dual;
TO_CHAR (2534.3, '999G999D99')
----------------------------------
2,534.30
1 row selected.
L#
설명#
지역 통화 기호(NLS_CURRENCY 프로퍼티에 설정된 값)를 지정한 위치에 반환한다.
예제#
iSQL> SELECT TO_CHAR (4000, 'L9999') FROM dual;
TO_CHAR (4000, 'L9999')
---------------------------
?4000
1 row selected.
MI#
설명#
MI를 숫자 표현 형식의 오른쪽 끝에 사용하면 입력 받은 수가 음수일 경우 마이너스(-) 기호를 숫자 끝에 붙여서 반환한다. 양수일 경우에는 공백문자가 들어간다.
제한사항#
MI는 항상 숫자 형식 표현의 오른쪽 끝에 와야 한다. S, PR과 같이 사용할 수 없다.
예제#
iSQL> SELECT TO_CHAR (-123, '999MI') FROM dual;
TO_CHAR (-123, '999MI')
---------------------------
123-
1 row selected.
iSQL> SELECT TO_NUMBER ( '123-', '999MI') FROM dual;
TO_NUMBER ( '123-', '999MI')
-------------------------------
-123
1 row selected.
PR#
설명#
PR를 숫자 표현 형식의 오른쪽 끝에 사용하면 입력 받은 수가 음수일 경우 마이너스 기호("-") 대신 "<숫자>" 형태로 출력된다.
제한사항#
PR은 항상 숫자 표현 형식의 오른쪽 끝에 와야 한다. S, MI와 같이 사용할 수 없다.
예제#
iSQL> SELECT TO_CHAR (-123, '999PR') FROM dual;
TO_CHAR (-123, '999PR')
---------------------------
<123>
1 row selected.
iSQL> SELECT TO_NUMBER ( '<123>', '999PR') FROM dual;
TO_NUMBER ( '<123>', '999PR')
--------------------------------
-123
1 row selected.
RN#
설명#
입력 받은 수를 로마 숫자로 변환한다. 입력할 수 있는 수는 1부터 3999까지이다. 숫자 표현 형식을 소문자 rn으로 사용하면 로마 숫자가 소문자로 출력된다.
제한사항#
다른 숫자 형식과 같이 사용할 수 없다. TO_NUMBER 함수에서 사용할 수 없다.
예제#
iSQL> SELECT TO_CHAR (14, 'RN') FROM dual;
TO_CHAR (14, 'RN')
----------------------
XIV
1 row selected.
S#
설명#
숫자 표현 형식의 처음이나 끝에 와서 입력 받은 수의 기호에 따라서 마이너스(-) 또는 플러스(+) 기호를 붙인다.
제한사항#
S는 숫자 표현 형식의 맨 앞이나 맨 뒤에만 올 수 있다. MI, PR과 같이 사용할 수 없다.
예제#
iSQL> SELECT TO_CHAR (123, 'S999.99') FROM dual;
TO_CHAR (123, 'S999.99')
----------------------------
+123.00
1 row selected.
iSQL> SELECT TO_CHAR (-123, '999.99S') FROM dual;
TO_CHAR (-123, '999.99S')
-----------------------------
123.00-
1 row selected.
iSQL> SELECT TO_NUMBER ( '+123', 'S999.99') FROM dual;
TO_NUMBER ( '+123', 'S999.99')
---------------------------------
123
1 row selected.
iSQL> SELECT TO_NUMBER ( '123.00-', '999.99S') FROM dual;
TO_NUMBER ( '123.00-', '999.99S')
------------------------------------
-123
1 row selected.
V#
설명#
V 다음에 있는 9의 개수와 10을 곱하고 그 값을 인자로 받은 숫자와 곱한다. V 앞의 9의 개수는 첫 번째 인자의 유효숫자의 개수를 의미한다.
제한사항#
마침표와 같이 사용할 수 없다. TO_NUMBER 함수에서 사용할 수 없다.
예제#
iSQL> SELECT TO_CHAR (12, '99V99') FROM dual;
TO_CHAR (12, '99V99')
-------------------------
1200
1 row selected.
iSQL> SELECT TO_CHAR (1200, '99V99') FROM dual;
TO_CHAR (1200, '99V99')
---------------------------
#####
1 row selected.
iSQL> SELECT TO_CHAR (-123.456, '999V999EEEEMI') from dual;
TO_CHAR (-123.456, '999V999EEEEMI')
---------------------------------------
1235E+02-
1 row selected.
XXXX#
설명#
입력 받은 수를 16진수로 변환한다. 만약 정수가 아니라면 반올림하여 16진수로 변환한다. xxxx는 16진수 중 문자를 소문자로 반환한다.
제한사항#
다른 숫자 표현 형식과 같이 사용할 수 없다. 변환할 수는 0 이상이어야 한다.
예제#
iSQL> SELECT TO_CHAR (123, 'XXXX') FROM dual;
TO_CHAR (123, 'XXXX')
-------------------------
7B
1 row selected.
iSQL> SELECT TO_NUMBER ('ABC', 'XXXX') FROM dual;
TO_NUMBER ('ABC', 'XXXX')
----------------------------
2748
1 row selected.