[SQL] Oracle 내장함수
Posted on 2010. 11. 10. 19:57
Filed Under DB
오라클 명령어 : 내장함수
샘플 테이블인 dual 테이블 : 가상테이블 dual
SQL> select 1234*1234 from dual;
round() : 반올림
소문자, 대문자 변환 함수
SQL> select upper('citylock') as "대문자" from dual;
SQL> select initcap('citylock') as "첫자만" from dual;
SQL> select concat('city', 'lock') from dual; * 문자열을 연결할때
SQL> select length('citylock'), lengthb('시티락') from dual; * 문자열의 길이 - 영문 1byte , 한글 2 byte
SQL> select substr('citylock', 1, 3) from dual; * 1번째 문자부터 3자
instr() : 문자열 시작 위치
SQL> select instr('citylock', 'lock') from dual; => 4번째 위치, 1부터 카운트 시작한다.
lpad(), rpad() : 자리 채우기
SQL> select lpad('citylock', 10, '@') from dual; => @@citylock
SQL> select rpad('citylock', 10, '@') from dual; => citylock@@
trim() : 양쪽 1개 문자만 제거, 공백이나 특정 문자 제거
SQL> select trim(' ' from ' RedPlus ') from dual; => 약쪽 공백 제거
abs() : 절대값
SQL> select abs(-10) from dual;
floor() : 소수자리 버리기
SQL> select floor(12.34) from dual; => 12
trunc() : 특정 자리 자르기
SQL> select trunc(12.3456, 3) from dual; => 12.345
mod() : 나머지
SQL> select mod(3, 5) from dual; => 결과 : 3
sysdate() : 날짜
SELECT SYSDATE FROM DUAL;
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
SELECT TRUNC(SYSDATE) + 1 + 2/24 FROM DUAL -- 다음날 새벽 2시를 지정함
months_between() : 개월수 구하기 : 근무 개월수
SQL> select ename, months_between(sysdate, hiredate) from emp where deptno = 10;
add_months() : 개월수 더하기
SQL> select add_months(sysdate, 4) from dual;
next_day(sysdate, '일요일') : 다가올 요일에 해당하는 날짜
SQL> select next_day(sysdate, '일요일') from dual;
last_day() : 해당 달의 마지막 일수
SQL> select last_day(sysdate) from dual;
to_char() : 문자열로 변환
SQL> select to_char(sysdate, 'yyyy-mm-dd') from dual;
to_date() : 날짜형으로 변환
SQL> select sysdate - to_date('2008/01/01','yyyy/mm/dd') from dual;
nvl() : NULL인 데이터를 다른 데이터로 변경 ( null 데이터를 => 0 값으로 변환, 값이 null 이면 프로그램에서 오류가 발생하므로 )
SQL> select ename, nvl(comm, 0) from emp;
decode() : switch문과 같은 기능
SQL> select deptno, decode(deptno, 10, '10번', 20, '20번', '기본') from emp;
** deptno 가 10 이면 '10번', 20이면 '20번', 나머지는 '기본' 으로 설정
case() : else if문
SQL> select ename, deptno,
case when deptno = 10 then 'accounting'
when deptno = 20 then 'research'
when deptno = 30 then 'sales'
when deptno = 40 then 'operations'
end dname
from emp;
** 조건에 맞으면 dname 에 지정된 값을 넣는다.