it-guide

오라클 Database 교육 노트 (2)

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으로 대처가능.