xml에 IN (${파라미터name:string:in})
콤보박스로 체크된 여러개의 값이 들어가고
이렇게 멀티값을 넣고 조회했는데
여기에 콤보박스를 선택하지 않으면 확인을 안 하게 해서
WHERE 1=1
AND ( ${파라미터name:string:in} IS NULL OR 파라미터컬럼명 IN (${파라미터name:string:in}) )
이렇게 하니까 당연ㅠㅠ 안돼고요...
이럴경우에
콤보박스에 값이 있을 경우 확인여부 파라미터를 만들어
WHERE 1=1
AND ${확인여부name} IS NULL OR IN( (${파라미터name:string:in}) )
이렇게 해야하나요 아니면 다른 방법이 있을까요?
====================================================== 수정
1. 콤보박스에 데이터가 이렇게 들어있습니다.
2. xml 쿼리 파일에는 이렇게 등록했습니다.
SELECT * FROM TABLE
WHERE 1=1
AND FRUIT IN ( ${fruit:string:in} ) IS NULL OR FRUIT IN ( ${fruit:string:in} )
위에 있는 사과, 참외, 귤 001, 004, 005 가 파라미터값이 들어가면 이렇게 들어갑니다.
SELECT * FROM TABLE
WHERE 1=1
AND FRUIT IN ( 001, 004, 005 ) IS NULL OR FRUIT IN ( 001, 004, 005 )
3. 그러면 실행이 당연 안돼서 현재 이렇게 해놓은 상태 입니다.
SELECT * FROM TABLE
WHERE 1=1
AND ${fruit_yn} IS NULL OR FRUIT IN ( ${fruit:string:in} )
다른 파라미터로 받아서 해당 값이 null이 아니면 멀티값으로 받은 값을 체크할 수 있도록 했습니다.
SQL로 풀어서 써주시면 안될까요?
글 다시 수정했습니다!
PC로 하니까 답글기능이 되네용!
mybatis인것 같은데...
AND ( NVL(${fruit:string:in}, 'NULL') = 'NULL' OR FRUIT IN ( ${fruit:string:in} ) )
이렇게 하면 되지 않을까요?
fruit_yn 값이 null 일때 포함하고 싶으시면 3번째로 하시는게 맞을것 같습니다.
오라클에서 null 은 is null / is not null 로만 조건이 걸리고
그렇지 않으면 nvl 함수를 쓰는수 밖에 없습니다.