com
오라클 Database 교육 노트 (2)
by Kitle · 2020. 06. 24.
5.장 함수
Rollup
Select
From
Group by rollup [컬럼1],
[컬럼2]
소계, 총계를 구할 때 활용한다.
[함수 테스트를 위한 더미 테이블 –
dual 결과값만 받아봄]
select lower('SQL Course')
from dual;
[NVL] 중요~
Select nvl(salary, 0)
From emp;
널이 널이 아닌 다른 값으로 바꿔주는 역할.
즉 salary에 null 값이
있으면 0으로 변환한다.
Select nvl2(salary, 0, -1)
From emp;
Salary 면 0, 0이면 0 -1을 가져온다.
[COALESCE]
Null 이 아닌 첫번째 값을 찾는 함수
Select coalesce(salary, comm, -2)
From emp;
Salary, comm.
---------------
100 200
-> 100
400 null
-> 400
Null 300
-> 300
Null null
-> -2
[count, count *] 주의해서 써야함.
count(*) | null, 중복 행 포함된 갯수 |
count(컬럼명) | null이 아닌 행의 개수 (단, 중복 행은 포함) |
C1이 1이면 ‘a’
2이면 ‘b’
3이면 ‘c’
그밖에는
‘d’
-- case
Case c1
When
1 then ‘a’
When
2 then ‘b’
When
3 then ‘c’
Else ‘d’
End
(성적표 grade 등에
사용)
-- decode
Decode(c1, 1, ‘a’,
2, ‘b’,
3, ‘c’, ‘d’)
[Lower 소문자 변환]
select
lower('SQL Course')
from
table;
Upper 대문자 변환
select
upper('SQL Course')
from
table;
첫글자는 대문자 나머지 소문자
select
initcap('SQL Course')
from
table;
문자와 문자 연결
select
concat('Hello', 'World')
from
table;
왼쪽부터 첫째자리부터 다섯자
select
substr('HelloWorld', 1, 5)
from
table;
왼쪽부터 첫째자리부터 전체
select
substr('HelloWorld', 1)
from
table;
오른쪽 다섯째자리부터 세자
select
substr('HelloWorld', -5, 3)
from
table;
SUB query
여러 개의 sub query를 더 복잡하게 사용할 수 있다.
select salary
from emp
where salary > ( select salary
from emp
where emp_name=’username’);
exists 는 처리가 좀 다르다.
Main query가 sub
query로 들어갔다 다시 결과를 main query로
일반적인 경우는 sub query의 결과를 main query로 던진다.
SubQuery의 종류
단일행 SQ : =,>,< 등등등 >> 결과값이 하나일 때만 가능함
복수행 IN, ANY, ALL
< any 절은 max로
< all 절은 min으로
대처가능.