오라클 case when구문의 THEN안에 IN구문 넣기 ('','') 0 9 16,879

by 겨울이불 [2018.12.21 17:46:17]


안녕하세요 !  질문이있습니다.

 

찾아보면...

WHERE절에  필드명 IN (CASE WHEN 비교값1 = 비교값2 THEN ('결과1') 는 되는데 ('결과1','결과2')는 안된다고 하네요~ㅜ

혹시 다른게 구현하는 방법이 있을까요?

 

 

by 우리집아찌 [2018.12.21 17:50:26]

where 필드명 in ( 결과 , 결과2 )


by 겨울이불 [2018.12.21 17:53:03]

비교값에따라 IN구문이 달라져야되서요 ~


by 우리집아찌 [2018.12.21 18:01:09]
WHERE 필드명 IN ( SELECT '결과1' FROM DUAL UNION ALL SELECT '결과2' FROM DUAL) -- SQL로 서브쿼리가 만들어지면 가능합니다.

 


by 겨울이불 [2018.12.21 18:39:46]

근데 저 결곽값에 NULL이들어가면..조회가안될까요?

('1','2' NULL) 을 같이 조회하고싶어서요;;;

CASE나 DECODE 사용해서  NULL값  비교는 안되는거같아서요...;;


by 야신 [2018.12.22 09:41:05]

In 에 null 은 안됩니다.

 


by 마농 [2018.12.24 08:26:46]

CASE 문의 결과는 "값"이 와야 합니다. "식"이 올 수는 없습니다.
WHERE 절에서는 여러개의 AND 와 OR 를 엮어서 다양한 조건을 줄 수 있습니다.
굳이 CASE 를 사용할 필요가 없습니다.
 

SELECT *
  FROM t
 WHERE ( 비교값1 = 비교값2 AND 필드명 = '결과1' )
    OR ( 비교값1 = 비교값3 AND 필드명 IN ('결과1'. '결과2') )
    OR ( 비교값1 = 비교값4 AND (필드명 IN ('결과1'. '결과2') OR 필드명 IS NULL) )
;

 


by 겨울이불 [2018.12.24 09:17:54]

그러게요~

저도 곰곰히 생각해보니 이런식으로 짤수있는 쿼리였는데...;;

암튼 감사합니다.!!


by 지현명 [2021.05.11 13:08:34]

저는 코드값을 맞춰 설계해서 Like문으로 했습니다.

WHERE Type LIKE CASE WHEN '{0}' = 'IA' THEN 'I%' ELSE '{0}' END
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입