IT개발/Oracle Database2010. 8. 31. 01:18

오라클 명령어 : 내장함수 

샘플 테이블인 dual 테이블 : 가상테이블 dual

SQL> select * from dual;
SQL> select 1234*1234 from dual;

round() : 반올림

SQL> select round(12.3456, 3) from dual

소문자, 대문자 변환 함수

SQL> select lower('CityLock') as "소문자" from dual;
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() : 날짜
SQL> select sysdate from dual;                              => 현재 날짜 

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 에 지정된 값을 넣는다.

 


 

Posted by 시티락