파게로그

[SQL] SQL로 IF문 구현 본문

콤퓨타 왕기초/SQLD/JDBC/Oracle DB

[SQL] SQL로 IF문 구현

파게 2021. 3. 31. 02:36

DECODE

SELECT ename, deptno, DECODE(deptno, 10, 300) 보너스
  FROM emp;

 

 

 

SELECT ename, deptno, DECODE(deptno, 10, 300, 20, 400, 30, 500, 0) 보너스
  FROM emp;

IF (deptno == 10)

  THEN RETURN 300

ELSE IF (deptno == 20)

  THEN RETURN 400

ELSE IF (deptno == 30)

  THEN RETURN 500

ELSE

  RETURN 0

 

 

 

CASE

SELECT ename, title, sal,
  CASE WHEN sal >= 3000 THEN 500
    WHEN sal >= 2000 THEN 300
    WHEN sal >= 1000 THEN 200
    ELSE 0
  END 보너스
  FROM emp
  WHERE title IN ('RESEARCHER', 'ANALYST');

DECODE문과 달리 CASE문에서는 등호 비교뿐만 아니라 부등호 비교도 가능하다.

ELSE를 쓰지 않으면 null로 처리된다.

 

IF (sal >= 3000)

  THEN RETURN 500

ELSE IF (sal >= 2000)

  THEN RETURN 300

ELSE IF (sal >= 1000)

  THEN RETURN 200

ELSE

  RETURN 0

Comments