본문 바로가기
데이터베이스/기초 SQL 입문

일반 함수

by 스키피땅콩버터 2020. 9. 13.
반응형

1. NULL값을 치환하는 함수

2. 조건 비교를 하는 함수


*NVL

NVL(exp1, exp2)

- 널값이 나오면 다른 값으로 바꿔 주세요.

- expr1이 null이면 expr2를 반환하고, expr1이 null이 아니면 expr1을 반환함

- 모든 데이터 타입에 적용 가능하며, expr1, expr2 데이터 타입을 일치시켜야 함

 

 

30번 부서원들의 사원이름, 급여, 보너스, 급여+ 보너스 값 조회

 

 

사원 이름, 급여, 보너스, 보너스가 null인 것은 -200으로 변환하여 조회

 

 

 

널값인 보너스 값은 널에 무엇을 더해도 널은 널이다.

이때, NVL함수를 사용하여 null인 값은 0으로 바꾸어 결괏값이 급여라도 나오게 설정해주면

다음과 같다.

 

급여 + 0 = 급여로 보이게 조회

 


*NVL2

NVL2(exp1, exp2, exp3)

- expr1이 null이 아닌 경우에는 expr2를 리턴하고, expr1이 null일 경우에는 expr3을 리턴함

- expr1은 임의의 데이터 형을 가질 수 있으며, expr2와 expr3 데이터 타입을 일치시켜야 함

 

 

K08팀 선수들의 선수 이름, 포지션, 포지션이 null인 경우 '등록 안됨'으로 표시 null이 아닌 경우 포지션 뒤에 '담당'

문자열 붙여서 조회(||)


*NULLIF

NULLIF(exp1, exp2)

- NULLIF는 expr1과 expr2를 비교함

- expr1과 expr2가 같으면 NULL값을 반환하고, expr1과 expr2가 같지 않으면 expr1을 반환함

- expr1에는 null을 지정할 수 없음

 

 

job이 salesman으로 등록된 것은 화면에 null로 표시하고 찍지 말고 넘어가 하는 역할을 한다.

즉, 조회 시 화면에 salesman이 많이 조회될 때 salesman직업은 보여주지 않고 나머지 직업들만 보여주어 

가시성을 높일 때 사용하면 좋다.

 

 

 


*COALESCE

COALESCE(exp1,,,expN)

- coalesce함수는 나열된 값을 순차적으로 체크하여  null이 아닌 첫 번째 인수를 반환함

- 모든 인수가 null인 경우에는 null을 반환함

 

 

 

이름, 보너스, 연봉, 보너스가 null이 아닌 경우 보너스를, 보너스가 null인 경우 연봉, 모두 null인 경우 50으로 표시


*DECODE

where절이 아닌 select위치에서의 조건문을 사용하고 싶을 때 DECODE나, CASE문을 사용하면 된다.

DECODE(VALUE, IF1, THEN1, IF2, THEN2, ... default값)

- VALUE값이 IF1 일 경우 THEN1 값으로 바꿔 주고 , VALUE값이 IF2일 경우 THEN2 값으로 바꿔 줌

- 일치하는 것을 발견하지 못한 경우 default값을 반환

- default가 생략되면 , 오라클은 null을 반환

 

 

DECODE는 비교하는 칼럼을 괄호 안에 적어주면 된다.(sal, 다음에 비교하고 싶은 값, '결괏값', '기타')

'결과값' 에는 sal의 값이 300이면 무슨 값으로 보여주고 싶은지 적어 주면 된다.

'기타' 위치는 해당 값이 비교하는 값과 다른 값일 때는 '기타'로 표시하겠다는 뜻이다.

 

앞의 두 개가 비교대상 sal 이 300이면 a팀, 아니면 기타

 

 

비교대상 추가 시 sal이 300이면 A팀, 5000이면 B팀, 나머지는 기타 조회

 


* CASE함수

WHERE절에서 조건을 사용하는 것이 아니라 Select 하면서 조건에 따라 다른 동작을 하고 싶으면 CASE문을 사용해 주면 됩니다.

CASE로 시작

첫 번째 조건 만족시 처리1 처리

첫번째 조건을 만족하지 않을 때만 두 번째 조건 만족 시 처리

ELSE는 제일 마지막에 한 번만 써주면 된다.

END로 마무리

 

 

CASE를 사용하게 되면 다양한 조건을 사용할 수 있습니다. (부등호, = , 사용 가능)

 

 

 

sal이 3000이면 a팀, 5000이면 B팀, 그 외엔 기타 로 조회

 

 

 

like조건문을 통해 중간에 A가 들어가면 A팀 그 외에 B팀으로 조회 

 

'데이터베이스 > 기초 SQL 입문' 카테고리의 다른 글

윈도우 함수  (0) 2020.09.16
그룹 함수  (0) 2020.09.14
변환 함수  (0) 2020.09.13
날짜 연산 및 날짜 함수  (0) 2020.09.11
문자 숫자 함수  (0) 2020.09.06