IT/오라클

오라클 기본 함수정리

미르오키드 2014. 9. 19. 13:18
반응형

날짜 처리 함수(Date Functions)

 

LAST_DAY(d)

LAST_DAY함수는 달의 마지막 날의 날짜를 반환합니다

SQL>SELECT SYSDATE TODAY, LAST_DAY(SYSDATE) LASTDAY FROM dual ;

TODAY LASTDAY
-----------------------------
05-JUN-2000 30-JUN-2000

오늘이 6월 5일이니깐요 6월달의 마지막 날30일을 반환합니다.



ADD_MONTHS(a, b)


ADD_MONTHS 함수는 a의 날짜에 b의 달을 더한 값을 반환 합니다.

SQL>SELECT TO_CAHR(ADD_MONTHS(SYSDATE,3),'RRRR/MM/DD' LASTDAY) "date"
FROM dual ;

date
------------
2000/09/05 오늘이 6월5일 이니깐요. 3개월이 더해진 9월 5일이 반환됩니다
.



MONTH_BETWEEN(a1, a2)


MONTH_BETWEEN은 a1과 a2 사이의 달의 수를 NUMBER형 타입으로 반환
합니다.

SQL>SELECT MONTHS_BETWEEN(TO_DATE('2000/06/05') , TO_DATE('2000/09/23')) "Date"
FROM dual ;

Date
----------------
-3.880635
달사이의 간격을 숫자형으로 반환합니다.



ROUND(d[,F])


ROUND 함수는 F에 지정된 단위로 반올림 합니다, F가 연도라면 연도 단위로 반올림 합니다.

SQL>SELECT ROUND(TO_DATE('1998/09/11'), 'YEAR') FROM dual ;

ROUND(TO_
--------------
99-01-01


SQL>SELECT ROUND(TO_DATE('1998/04/11'), 'MONTH') FROM dual ;

ROUND(TO_
---------------
98-04-01

SQL>SELECT ROUND(TO_DATE('1998/04/11'), 'DAY') FROM dual ;

ROUND(TO_
---------------
98-04-11

 

single row (단일 행 함수)

1. Date type function
- last_day : select last_day(sysdate) from dual;

- months_between : select months_between(sysdate,sysdate-60) from dual;

- sysdate : select sysdate from dual;

- next_day : select next_day('19990805',7) review from dual;
select next_day(sysdate,7) from dual;
- 입력일자이후의 처음에 해당하는 요일을 표시함.
- 0:일,1:월 ~ 7:토

- add_months : select add_months(sysdate,6) from dual;
- 기준일의 입력된 개월후의 일자 표시

- months_between : select months_between('19990801','19990101') from dual;
- 일자간의 개월수를 구함.


2. Number type function
- trunc : 버림 양수:소수점 아래 음수 소수점 위 생략:소수점아래 버림

select trunc(123.456,2) from dual;

- round : 반올림 양수:소수점 아래 음수 소수점 위 생략:정수 반올림

select round(123.456,2) from dual;

- ceil : 주어진 숫자보다 크거나 같은 정수 중 최소값을 돌려준다.

select ceil(2), ceil(2.1) from dual;

- mod : 주어진 숫자를 지정된 숫자로 나눈 나머지를 돌려준다.

select mod(13,4) from dual;

- sign : 주어진 값의 음수, 정수, 0 여부를 돌려준다.

select sign(-10), sign(10), sign(null) from dual;

 


3. charater type function
- substr : select substr('abcdinstringefg',5,8) from dual;
- 5번째 문자부터 8글자를 발췌하라.

- upper : 대문자로 변환

- lower : 소문자로 변환

- initcap : select initcap('title') from dual;
- 첫문자만 대문자료 표기.

- lpad : select lpad('xy',12,'ab') from dual;
- 12자리가 될때까지 'ab'를 왼쪽으로 채움. (결과:abababababxy)
- 'ab'를 생략하면 space를 채움.

- rpad : select rpad('xy',12,'ab') from dual;
- 12자리가 될때까지 'ab'를 오른쪽으로 채움. (결과:xyababababab)
- 'ab'를 생략하면 space를 채움.

- length : select length('홍길동') from dual;

- like : select COLUMN_NAME from TABEL_NAME

where upper(COLUMN_NAME) = like '%길%';

1. CONCAT(char1, char2)

- CONCAT 함수는 Concatenation의 약자로 두 문자를 결합하는 역할을 한다.

( "||" 연산자와 같은 역할을 한다. )



SQL>SELECT CONCAT('Oracle', ' Korea') NAME FROM dual ;



NAME
-------------
Oracle Korea



2. INITCAP(char)

- 주어진 문자열의 각 단어의 첫 번째 문자를 대문자로 변환. 각 단어는 공백으로 분리.

SQL>SELECT INITCAP('kim jung sick') NAME FROM dual ;



NAME
-------------
Kim Jung Sick



3. LOWER(char)

- 문자열을 소문자로 변환.



SQL>SELECT LOWER('KIM JUNG SICK') NAME FROM dual ;



NAME
-------------
kim jung sick



4. UPPER(char)

- 문자열을 대문자로 변환 시켜 줍니다.



SQL>SELECT UPPER('kim jung sick') NAME FROM dual ;



NAME
--------------
KIM JUNG SICK



5. LPAD(char1, n [,char2])

- 왼쪽에 문자열을 끼어 놓는 역할을한다. n은 반환되는 문자열의 전체 길이를 나타내며, char1

의 문자열이 n보다 클 경우 char1을 n개 문자열 만큼 반환함.

SQL>SELECT LPAD('JUNG-SICK', 10, '*') NAME FROM dual ;

NAME
------------
*JUNG-SICK



6. RPAD(char1, n [,char2])

- LPAD와 반대로 오른쪽에 문자열을 끼어 놓는 역할을 한다.

SQL>SELECT RPAD('JUNG-SICK', 10, '*') NAME FROM dual ;



NAME
------------
JUNG-SICK*



7. SUBSTR(char, m ,[n])

- SUBSTR함수를 이용하여 m 번째 자리부터 길이가 n개인 문자열을 반환한다. m이 음수일 경우에는 뒤에서 M번째 문자부터 반대 방향으로 n개의 문자를 반환한다.

SQL>SELECT SUBSTR('JUNG-SICK', 3, 3) NAME FROM dual ;



NAME
-----------
NG-



-- 뒤에서부터 자를 경우
SQL>SELECT SUBSTR('JUNG-SICK', -3, 3) NAME FROM dual ;



NAME
-----------
ICK



8. LENGTH(char1)

- 문자열의 길이를 리턴.

SQL>SELECT LENGTH('JUNG-SICK') TEST FROM dual ;



TEST
----------
9



9. REPLACE(char1, str1, str2)

- REPLACE는 문자열의 특정 문자를 다른 문자로 변환 한다.


SQL> SELECT REPLACE('JACK and JUE','J','BL') "Changes" FROM DUAL;

Changes
--------------
BLACK and BLUE



SQL> SELECT REPLACE('JACK and JUE','JA','BL') "Changes" FROM DUAL

Changes
------------
BLCK and JUE


-- 대소문자를 구분한다는 것을 알수 있음.
SQL>SELECT REPLACE('JACK and JUE','j','BL') "Changes" FROM DUAL

Changes
------------
JACK and JUE



10. INSTR

- 문자열이 포함되어 있는지를 조사하여 문자열의 위치를 반환한다.
- 지정한 문자열이 발견되지 않으면 0이 반환됨.



-- 지정한 문자 OK가 발견되지 않아서 0이 반환 됨.
SQL>SELECT INSTR('CORPORATE FLOOR','OK') "Instring" FROM DUAL

Instring
----------
0


-- OR이 있는 위치 2를 반환 한다. 왼쪽부터 비교를 한다는 것을 알 수 있음.
SQL>SELECT INSTR('CORPORATE FLOOR','OR') "Instring" FROM DUAL

Instring
----------
2


-- 왼쪽에서 3번째부터 시작을 해서 비교를 한다. 2번째 OR의 위치가 반환 됨.
SQL>SELECT INSTR('CORPORATE FLOOR','OR', 3) "Instring" FROM DUAL

Instring
----------
5


-- 왼쪽에서 3번째부터 시작해서 비교를 하는데 OR이 두 번째 검색되는 지점의 위치를 반환 한다.
SQL> SELECT INSTR('CORPORATE FLOOR','OR', 3, 2) "Instring" FROM DUAL;

Instring
----------
14




11. TRIM

- 특정한 문자를 제거 한다.
- 제거할 문자를 입력하지 않으면 기본적으로 공백이 제거 됨.
- 리턴값의 데이터타입은 VARCHAR2.



-- 0을 제거
SQL>SELECT TRIM(0 FROM 0009872348900) "TRIM Example" FROM DUAL;

TRIM Example
------------
98723489


-- 어떤 문자도 입력하지 않으면 기본적으로 공백이 제거 됨.
SQL>SELECT NVL(TRIM (' '),'공백') "TRIM Example" FROM DUAL

TRIM Example
------------
공백

-- TRIM을 사용한 위에 예제와 사용하지 않은 아래 예제의 결과 값이 다름을 알 수 있다.SQL>SELECT NVL(' ','공백') "TRIM Example" FROM DUAL

TRIM Example
------------


12. LTRIM

SQL>SELECT LTRIM('xyxXxyLAST WORD','xy') "LTRIM example" FROM DUAL;

LTRIM example
------------
XxyLAST WORD


13. RTRIM

SQL>SELECT RTRIM('BROWNINGyxXxy','xy') "RTRIM example" FROM DUAL;



RTRIM examp
-----------
BROWNINGyxX


 

 


4. type conversion function
- to_char : select to_char(sysdate,'yyyymmdd') from dual;
select to_char(sysdate,'yyyy-mm-dd') from dual;
select to_char(00123,'00999') from dual;
select to_char(123456,'999,999') from dual;
select to_char('123456','999,999') from dual;

- to_date : select to_date('980101','yymmdd') from dual;
select to_date(980505,'yymmdd') from dual;

- to_number : select to_number('1234') from dual;


Multiple rows (다중 행 함수 - Group 함수)


1. sum : select sum(salary) from s_emp;
select sum(COLUMN_NAME) from TABEL_NAME;

2. count : select count(salary) from s_emp;
select count(COLUMN_NAME) from TABEL_NAME;
select count(distinct, COLUMN_NAME) from TABEL_NAME;
- 중복된 값은 count하지 않는다.

3. avg : select avg(salary) from s_emp;
select avg(COLUMN_NAME) from TABEL_NAME;

4. max : select max(salary) from s_emp;
select max(COLUMN_NAME) from TABEL_NAME;

5. min : select min(salary) from s_emp;
select min(COLUMN_NAME) from TABEL_NAME;

6. group by : select min(salary) from s_emp group by dept_id;
select min(COLUMN_NAME) from TABEL_NAME group by COLUMN_NAME;


ex) select last_name from s_emp where salary = (select max(salary) from s_emp);

ex) select dept_id, salary, last_name from s_emp where salary = (select max(salary) from s_emp group by dept_id);

ex) select dept_id, sum(salary), count(salary), trunc(avg(salary),0), max(salary), min(salary)
from s_emp
group by dept_id
having max(salary) > 1000;
 

 

반응형