코드저장소/sql

ORACLE/MYSQL/MSSQL 관계없이 CASE WHEN THEN ELSE END 사용하기

개발로짜 2014. 10. 8. 23:44

안녕하세요 개발로짜입니다 ^^


이번포스팅은 DB 조건문을 주었을 경우 사용하는 CASE 문인대요 

제목에서 아시다시피 주로사용하는 Oracle 이나 MySQL, MS-SQL 모두 적용 가능한 다중 조건문입니다.


일반 개발에서 사용하는 

switch 문이나 if문과 비슷하다고 보시면 되실거예요


오라클과 MySQL에는 참 또는 거짓을 기술할수 있는...

쉽게말해서 if else 문이 별도로 존재하는데 

요건 다음 포스팅때 작성하도록 하겠습니다.


그럼 우선적으로 사용 구문법부터 보시겠습니다.


??


CASE WHEN 기본 사용법

CASE
WHEN 조건
THEN '대체값'
WHEN 조건
THEN '대체값'
ELSE 'WHEN 조건에 해당안될경우의 기본값'
END

사용문법은  위와같습니다.

말씀드린 switch 문이랑 if 문이랑 비슷하죠?


오키


그럼 어짜피 모든 DBMS에 적용가능한 문법이니 

아무거나 정해서 CASE문을 적용해보도록 하겠습니다.


고고



우선 저는 MySQL DB로 적용해볼까 합니다.


아무 테이블에 존재하는 데이터를 변경해보도록 하겠습니다.





저같은 경우 member 테이블의 데이터들을 조회한 결과 

상단처럼 member_name 컬럼에 중복값이 들어가 있습니다.


'이순신','홍길동'


한글을 조건절에 들어가는것은 좋지 않습니다

샘플삼아 작성하는것이므로 ...


조건

member 테이블의 member_name의 결과값이 '이순신'이면 '중복1' , '홍길동'이면 '중복2', 그외에는 '중복아님' 출력


위 조건으로 실행쿼리를 작성해보도록 하겠습니다.


CASE문 포함된 실행쿼리

SELECT member_name,
       CASE
         WHEN member_name = '이순신'
         THEN '중복1'
         WHEN member_name = '홍길동'
         THEN '중복2'
         ELSE '중복아님'
       END AS result
FROM member

실행결과





위와같이 정상적으로 CASE문이 사용하여 결과값이 나왔습니다!!!


꺅


MySQL이 아니여도 MS-SQL 또는 오라클에서도 구문을 동일 하게 사용할 수 있답니다~


Bye


by 개발로짜