본문 바로가기

IT관련

[SQL] 오라클의 if then else 표현 decode, case when 문장

Oracle DBMS에서 SQL문을 만들때 프로그램에서처럼 if then else 문을 사용할 수 있습니다.

두가지 방법이 있는데, decode 와 case when 문장입니다.

 

decode(컬럼, 값1, 리턴1, 값2, 리턴2, 리턴3);
      -- decode 문 안에서 decode 문 중첩해서 사용 가능.
      -- 해석: "컬럼=값1" 인 경우 리턴1, "컬럼=값2" 인 경우 리턴2, 나머지는 리턴3

 

decode 문은 equal(=) 조건에 해당하는 형태로 사용합니다.

좀더 if then else 문처럼 다양한 표현식을 쓰고자 하는 경우에는 case when 문이 더 적합합니다.

 

1)
case 컬럼/식

       when 값1 then 리턴1
       when 값2 then 리턴2
       else 리턴3
end

 

2)
case

       when 조건식1 then 리턴1
       when 조건식2 then 리턴2
       else 리턴3
end

 

case when 문장은 위에서처럼 2가지 형태로 사용이 가능합니다.

 

 

아래는 사용예~

 

 

1) decode 문 사용예~

 

 

2) case when 문 사용예~

 

 

단순한 if 문 비교의 경우는 decode 나 case when 어떤 것을 쓰더라도 똑같은 결과를 만들어낼 수 있습니다.