IN에 들어가는 멀티데이터 NULL여부 체크 0 4 2,257

by 마법소녀 [SQL Query] IN NULL ISNULL [2023.01.06 11:39:38]


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. 콤보박스에 데이터가 이렇게 들어있습니다. 

001

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이 아니면 멀티값으로 받은 값을 체크할 수 있도록 했습니다. 

002

by 우리집아찌 [2023.01.06 14:41:13]

SQL로 풀어서 써주시면 안될까요?


by 마법소녀 [2023.01.07 11:53:35]

글 다시 수정했습니다! 

PC로 하니까 답글기능이 되네용!


by 동동동 [2023.01.09 09:11:24]

mybatis인것 같은데...

AND ( NVL(${fruit:string:in}, 'NULL') = 'NULL' OR FRUIT IN ( ${fruit:string:in} ) )

 

이렇게 하면 되지 않을까요?

 


by 우리집아찌 [2023.01.09 09:43:54]

fruit_yn 값이 null 일때 포함하고 싶으시면 3번째로 하시는게 맞을것 같습니다. 

오라클에서 null 은 is null / is not null 로만 조건이 걸리고 

그렇지 않으면 nvl 함수를 쓰는수 밖에 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입