Search

반응형

'사용하는 방법'에 해당되는 글 1건

  1. 2020.09.05 [HOW]sql 조건문 CASE와 DECODE 사용하는 방법
반응형

안녕하세요. 신기한 연구소입니다.

프로그램을 개발하다 보면 조건절을 사용하는 경우가 정말 많습니다.

사실 자주 사용하는 언어인 java에서 if-then을 주로 애용합니다.

왜냐하면.. 편하니깐요. ㅎㅎ

If-then과 비슷하게 사용할 수 있는 switch문이 java에는 있는데요.

sql에서는 case문을 사용합니다.

sql에서도 if-then이 있지만 case문으로 조건에 맞게 데이터를 표출할 수 있답니다.

그럼 case문을 어떻게 사용하는지 살펴보겠습니다.

 

 

테이블의 어떤 값에 따라 상수값을 표현하거나 또는 다른 컬럼값을 보여주고 싶다면 case문을 사용하면 됩니다.

 

select case deptno

        when 10 then 'ACCOUNTING'   --deptno의 값이 10이면

        when 20 then 'RESEARCH'  --deptno의 값이 20이면

        else loc  --deptno값이 10, 20이외의 값이면

        end as test

 from dept;

 

test

ACCOUNTING

RESEARCH

CHICAGO

BOSTON

 

case문 뒤에 조건에 해당하는 컬럼을 지정하고 그 컬럼의 값에 따라서 when에 설정한 뒤 then 뒤에 표출할 값이나 컬럼을 지정하면 됩니다.

 

마지막 else는 when에 해당하는 조건이 없으면 모조리 else 뒤의 값으로 대체하게 됩니다.

 

select sal,

   case when sal < 1000 then 'low'  --특정 컬럼값이 아닌 sal의 값의 표현식

        when (1000 < sal and sal < 2000) then 'mid'

        else 'high'

        end level

from emp;

 

sal

level

800

low

1600

mid

1250

mid

2975

high

1250

mid

2850

high

2450

high

5000

high

1500

mid

950

low

3000

high

1300

mid

 

또한 case문 안에 case문을 사용할 수도 있습니다.

select ename, sal,

    case

    when sal > 1000 then 'high'

    else (case

            when sal <= 1000 then 'low'

            else 'nothing'

            end

        )   

    end lev

from emp;

 

 

ENAME

SAL

LEV

SMITH

800

low

ALLEN

1600

high

WARD

1250

high

JONES

2975

high

MARTIN

1250

high

BLAKE

2850

high

CLARK

2450

high

KING

5000

high

TURNER

1500

high

JAMES

950

low

FORD

3000

high

MILLER

1300

high

 

이렇게 case문을 활용하면 조건에 맞게 데이터를 조작할 수 있습니다.

Case문외에도 DECODE문이 있는데 간단하게 사용할 수 있습니다.

 

select decode(comm, null, 0, comm) comm

        from emp;

 

comm의 값이 null이면 0을 null이 아니면 그대로 comm값을 보여주는 표현식입니다.

 

DECODE(표현식, 표현식의 값과 일치 여부, 일치하면 표출할 값, 표현식의 값과 일치 여부, 일치하면 표출할 값,..., 

표현식의 값과 일치하는 값이 없으면 디폴트값)

CASE와 DECODE 모두 자주 사용하는 표현입니다.

잘 숙지해서 편리하게 이용하면 되겠습니다.

 

반응형