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() 버튼을 클릭하여 작성 하시면 됩니다.