숫자 함수
함수명 |
||
ROUND |
반올림 한 후 출력 |
ROUND(12.345, 2) -> 12.35 |
TRUNC |
버림 한 후 출력 |
TRUNC(12.345, 2) -> 12.34 |
MOD |
나머지 값 출력 |
MOD(12, 10) -> 2 |
CEIL |
가장 근접한 큰 정수 출력 |
CEIL(12.345) -> 13 |
FLOOR |
가장 근접한 작은 정수 출력 |
FLOOR(12.345) -> 12 |
POWER |
제곱승 출력 |
POWER(3, 2) -> 9 |
ROUND
(숫자, 자리수) : 주어진숫자를 반올림 후 출력. 소수점기준(자리수)TRUNC
(숫자, 자리수) : 버림.
MOD()
: 나머지값 출력 /CEIL()
: 가장 가까운 큰정수 출력 / FLOOR()
: 가장 가까운 작은정수
ex) CEIL 함수의 경우 여러 데이터들을 하나의 기준으로 묶을 때 주로 사용함. 아래의 예는 emp 테이블의 13 건의 데이터를 출력하되 3 줄씩 나누어서 한 조로 만드는 예.
SQL> SELECT rownum "ROWNO", CEIL(rownum/3) "TEAMNO", ename //rownum은 출력 줄번호 2 FROM emp; ROWNO TEAMNO ENAME ----- --------- ---------- 1 1 SMITH 2 1 ALLEN 3 1 WARD 4 2 JONES 5 2 MARTIN 6 2 BLAKE 7 3 CLARK 8 3 SCOTT 9 3 KING 10 4 TURNER 11 4 JAMES 12 4 FORD 13 5 MILLER
POWER
(2,3) : 2의 3승 값을 출력
날짜 함수
SYSDATE
: 현재 시스템의 시간을 출력
- 윈도우와 유닉스(리눅스)의 날짜형식 다름
SQL> SELECT SYSDATE FROM dual; //리눅스형식 SYSDATE ----------- 30-AUG-16
- 윈도우 날짜형식으로 변환가능
SQL> ALTER SESSION SET NLS_DATE_FORMAT='YY/MM/DD'; Session altered. SQL> ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD:HH24:MI:SS';
MONTHS_BETWEEM()
: 두날짜 사이의 개월수를 출력
- 두 날짜중 큰 날짜를 먼저 써야 양수가 출력
- 두 날짜가 같은 달에 속해 있으면 특정 규칙으로 계산된 값이 출력(같은 1개월이라도 29일,30일,31일 같은 경우마다 모두 결과값이 다를것)
ADD_MONTHS()
: 주어진 날짜에 숫자만큼의 달을 추가NEXT_DAY()
: 주어진날짜 기준으로 돌아오는 가장 최근 요일의 날짜를 반환LAST_DAY()
: 주어진날짜가 속한 달의 가장 마지막 날을 출력ROUND()
: 정오를 넘겼을경우 다음 날짜로 출력하고 안넘겼을 경우는 당일로 출력TRUNC()
: 무조건 당일로 출력형변환 함수
명시적(수동) 형 변환 : 형변환 함수를 통해 수동으로 데이터 형을 바꾸는것.
형변환 함수는 위 그림처럼 TO_CHAR, TO_NUMBER, TO_DATE 세가지로 나뉘고, TO_CHAR 함수는 숫자와 날짜를 문자로 변환해주는 두가지 기능을 한꺼번에 가짐.
데이터 타입 |
|
CHAR(n) |
고정길이의 문자를 저장. 최대값 2000 bytes |
VARCHAR2(n) |
변하는 길이의 문자를 저장. 최대값 4000 bytes |
NUMBER(p,s) |
숫자 값을 저장. p 는 전체 자리수로 1-38 자리까지 가능하고 s는 소수점 이하 자리수로 -84 ~ 127 자리까지 가능 |
DATE |
7Byte로 BC 4712년 1월 1일부터 AD 9999년 12월 31일까지의 날짜를 저장. |
LONG |
가변 길이의 문자를 저장. 최대 2GB 까지 저장 |
CLOB |
가변 길이의 문자를 저장. 최대 4GB 까지 저장 할 수 있음 |
BLOB |
가변 길이의 바이너리 데이터를 최대 4GB 까지 저장 할 수 있음 |
RAW(n) |
원시 이진 데이터로 최대 2000 bytes 까지 저장 |
LONG RAW(n) |
원시 이진 데이터로 최대 2GB까지 저장 |
BFILE | 외부 파일에 저장된 데이터로 최대 4GB 까지 저장 |
TO_CHAR
(날짜 or 숫자,'원하는형태')- ex) TO_CHAR(sysdate,'RRRR-MM-DD:HH:MI:SS')
- ex) TO_CHAR(12345, '99,999') : 12,345
SCOTT>SELECT empno, ename, sal, comm, 2 TO_CHAR((sal*12)+comm, '999,999') "SALARY" 3 FROM emp 4 WHERE ename = 'ALLEN'; EMPNO ENAME SAL COMM SALARY ---------- ---------- ---------- ---------- -------- 7499 ALLEN 1600 300 19,500
cf) 날짜와 숫자를 표현하는 방법
[ 년도 ]
‘YYYY’ – 연도를 4자리로 표현.
‘RRRR’ – 2000년 이후에 Y2K 버그로 인해 등장한 날짜 표기법으로 연도 4자리 표기법.
‘YY’ – 연도를 끝의 2 자리만 표시. 예 : 14
'RR' - 연도를 마지막 2 자리만 표시. 예: 14
‘YEAR’ – 연도의 영문 이름 전체를 표시.
[ 월 ]
MM – 월을 숫자 2자리로 표현. 예: 10
MON – 유닉스용 오라클에서 월을 뜻하는 영어 3글자로 표시. 예: OCT 윈도용 오라클일 경우는 MONTH 와 동일.
MONTH – 월을 뜻하는 이름 전체를 표시
[ 일 ]
DD – 일을 숫자 2자리로 표시. 예: 26
DAY – 요일에 해당하는 명칭을 표시하는데 유닉스용 오라클에서는 영문으로 나오고 윈도용 오라클에서는 한글로 나옴.
DDTH – 몇 번째 날인지를 표시.
[ 시간 ]
HH24 – 하루를 24시간으로 표시.
HH – 하루를 12 시간으로 표시.
분 : MI 로 표시.
초 : SS 로 표시.
[숫자]
9 의 개수만큼 자리수 TO_CHAR(1234,’99999’) 1234
빈자리를 0으로 채움 TO_CHAR(1234,’099999’) 001234
$ 표시를 붙여서 표시 TO_CHAR(1234,’$9999’) $1234
소수점 이하를 표시 TO_CHAR(1234,’9999.99’) 1234.00
천 단위 구분기호를 표시 TO_CHAR(12345,’99,999’) 12,345
- TO_NUMBER('숫자처럼 생긴 문자')
- ASCII('문자') : 문자를 아스키 코드 값으로 출력
- TO_DATE('날짜처럼 생긴 문자')
QUIZ1
Student 테이블의 birthday 컬럼을 사용하여 생일이 1월인 학생의 이름과 birthday 를 아래 화면과 같이 출력하시오.
QUIZ2
emp 테이블의 hiredate 컬럼을 사용하여 입사일이 1,2,3 월인 사람들의 사번과 이름, 입사일을 출력하시오.
QUIZ3
emp 테이블을 조회하여 comm 값을 가지고 있는 사람들의 empno , ename , hiredate , 총연봉,15% 인상 후 연봉을 아래 화면처럼 출력하세요. 단 총연봉은 (sal*12)+comm 으로 계산하고 아래 화면에서는 SAL 로 출력되었으며 15% 인상한 값은 총연봉의 15% 인상 값임. (HIREDATE 컬럼의 날짜 형식과 SAL 컬럼 , 15% UP 컬럼의 $ 표시와 , 기호 나오게)
[출처] 다양한 예제로 쉽게 배우는 오라클 SQL과 PL/SQL 서진수 저
'Oracle > sql' 카테고리의 다른 글
[SQL] 3. 복수행함수(그룹함수) (1) | 2016.09.05 |
---|---|
[SQL] 2. 단일행함수(정규식표현) (0) | 2016.09.05 |
[SQL] 2. 단일행함수(일반함수) (0) | 2016.09.02 |
[SQL] 2. 단일행함수(문자함수) (0) | 2016.08.29 |
[SQL] 1. 오라클 서버접속, 기본 SELECT 구문 (0) | 2016.08.24 |