by 겨울이불 [2018.12.21 17:46:17]
안녕하세요 ! 질문이있습니다.
찾아보면...
WHERE절에 필드명 IN (CASE WHEN 비교값1 = 비교값2 THEN ('결과1') 는 되는데 ('결과1','결과2')는 안된다고 하네요~ㅜ
혹시 다른게 구현하는 방법이 있을까요?
where 필드명 in ( 결과 , 결과2 )
비교값에따라 IN구문이 달라져야되서요 ~
WHERE
필드명
IN
(
SELECT
'결과1'
FROM
DUAL
UNION
ALL
'결과2'
DUAL)
-- SQL로 서브쿼리가 만들어지면 가능합니다.
근데 저 결곽값에 NULL이들어가면..조회가안될까요?
('1','2' NULL) 을 같이 조회하고싶어서요;;;
CASE나 DECODE 사용해서 NULL값 비교는 안되는거같아서요...;;
In 에 null 은 안됩니다.
CASE 문의 결과는 "값"이 와야 합니다. "식"이 올 수는 없습니다. WHERE 절에서는 여러개의 AND 와 OR 를 엮어서 다양한 조건을 줄 수 있습니다. 굳이 CASE 를 사용할 필요가 없습니다.
*
t
( 비교값1 = 비교값2
AND
필드명 =
)
OR
( 비교값1 = 비교값3
.
) )
( 비교값1 = 비교값4
(필드명
IS
NULL
;
그러게요~
저도 곰곰히 생각해보니 이런식으로 짤수있는 쿼리였는데...;;
암튼 감사합니다.!!
저는 코드값을 맞춰 설계해서 Like문으로 했습니다.
WHERE Type LIKE CASE WHEN '{0}' = 'IA' THEN 'I%' ELSE '{0}' END