*.함수
함수명(~)
SQL> -- 업무별 최고급여,최저급여,총급여,평균급여, 인원수 조회
SQL> select job, max(sal), min(sal), sum(sal), avg(sal), count(*)
1 from emp
2 group by job
3 ;
SQL> /
JOB MAX(SAL) MIN(SAL) SUM(SAL) AVG(SAL) COUNT(*)
--------- ---------- ---------- ---------- ---------- ----------
ANALYST 3000 3000 6000 3000 2
CLERK 1300 800 4150 1037.5 4
MANAGER 2975 2450 8275 2758.33333 3
PRESIDENT 5000 5000 5000 5000 1
SALESMAN 1600 1250 5600 1400 4
*.group by ~ havaing ~ ... : 그룹별로 구분
select ~
from ~
[where 조건]
[group by 기준]
[having 그룹조건]
[order by 정렬]
SQL> --급여가 3000이상되는 사원에 한해
SQL> --업무별 최고급여가 2000 초과하는...
SQL> edit
1 select job, max(sal), min(sal), sum(sal), avg(sal), count(*)
2 from emp
3 group by job
4* having max(sal)>2000
L> /
B MAX(SAL) MIN(SAL) SUM(SAL) AVG(SAL) COUNT(*)
------- ---------- ---------- ---------- ---------- ----------
ALYST 3000 3000 6000 3000 2
NAGER 2975 2450 8275 2758.33333 3
ESIDENT 5000 5000 5000 5000 1
ex)
select deptno, max(sal), min(sal), (max(sal)-min(sal)) as cap
from emp
--where deptno in (20,30)
group by deptno
having min(sal)>2500 and deptno in (20,30)
/
*.문자함수
trim( ) : 공백 제거
Rtrim('~','A') : 오른쪽으로 잘라버림
Ltrim('~','A') : 왼쪽으로 잘라버림
ex)
1 select rtrim('과학수사과','과'), ltrim('과학수사과','과'), trim(' ab ')
2* from dual
3 ;
RTRIM(' LTRIM(' TR
-------- -------- --
과학수사 학수사과 ab
Rpad('~',20,'#') : ~부분 오른쪽을 ~포함 20자리로 만들고 부족한 부분은 '#'으로 채워넣음.
Lpad('~',20,'#') : ~부분 왼쪽을 ~포함 20자리로 만들고 부족한 부분은 '#'으로 채워넣음.
ex)
L> select rpad('www',10,'*'), lpad('www',10,'*')
2 from dual
3 ;
AD('WWW' LPAD('WWW'
-------- ----------
w******* *******www
length() : 문자열 길이 구하는 함수
lengthb() : 문자열을 비트로 구하는 함수
1 select length('oracle'), length('오라클')
2* from dual
3 ;
LENGTH('ORACLE') LENGTH('오라클')
---------------- ----------------
6 3
SQL>
instr(문자열, '특정문자', 시작위치, 번째) -> position
SQL> select instr('ORCLE','LE')
2 from dual
3 ;
INSTR('ORCLE','LE')
-------------------
4
--사원이름에 L이 포함되는 사원에 한해.
--사원이름에 L이 몇번째 위하는 지 출력.
1 select ename, instr(ename, 'L')
2 from emp
3* where instr(ename, 'L') > 0
SQL> ;
SQL> /
ENAME INSTR(ENAME,'L')
---------- ----------------
ALLEN 2
BLAKE 2
CLARK 2
MILLER 3
str(문자열, 시작위치, length) -> 문자열 형태로 리턴.
1 select substr('oh~happy!day', 4,3), substr('oh~happy!day', -4,3)
2* from dual
3
SQL> /
SUB SUB
--- ---
hap !da
-. 80년 11월 23일 표시
1 select substr('801123-1234567',1,2)||'년 '
2 ||substr('801123-1234567',3,2)||'월 '
3 ||substr('801123-1234567',5,2)||'일'
4* from dual
SQL> /
SUBSTR('801123
--------------
80년 11월 23일
전화번호 02)112-3444 중간번호 추출
select substr
(
'031)2222-1111',instr('031)2222-1111',')')+1,
(
instr('031)2222-1111','-') - (instr('031)2222-1111',')')+1)
)
) as '지역번호'
from dual