SQL/MS-SQL & SQL Server Management Studio

[MSSQL] WHERE 절에 IF문 과 같은 효과 쿼리

삐뚤어진 개발자 2019. 9. 4.

ms sql 쿼리를 작성하다,

보통은 where 절에 case문으로 조건을 나눠 조회 쿼리를 작성하면 된다.

하지만 간혹 case문으로 해결 되지 않는 로직이 있을 때가 있다.

 

그럴땐 아래의 예시를 참조하여 보자.

 

예시)

DECLARE @PARAM VARCHAR(10)

SELECT NAME, AGE FROM TB_TEST
 WHERE (
 (@PARAM ='0' AND NAME = 'A') OR 
 (@PARAM ='1' AND NAME = 'B') 
			)

 

 

- @PARAM 을 '0' 으로 받았을때, TB_TEST 테이블에서 NAME 이 A인 사람이 조회 되고,

'1'로 받았을 때, NAME 이 B인 사람이 조회된다.

 

 

설명 : 

생각을 조금 바꿔 본다면.. 빨리 풀릴수 있는 문제인데 case 문으로만 생각한다면 조금 오래걸리거나 불가능하지 않을까 생각한다. 

저 쿼리를 조금 바꿔서 설명하자면, @PARAM = 0 과 NAME = 'A' 일때, @PARAM = 1 과 NAME = 'B' 일때만 검색되고 나머지 경우는 검색이 안된다고 생각하면 쉽다.

예를 들어 @PARAM = 1 과 NAME ='A'는 검색 되지 않겠지?

댓글