like '%'.. 0 2 1,781

by 조조맹덕 [2009.10.19 09:51:57]


동적쿼리를 쓰지 않고.. 사용할때 많이 사용하는 문인데요.

일단 무시 로 들어가서 비용이 안들기에...

근데 대부분 정확하게 나오는데.. 특정 컬럼 경우엔 데이터가

틀리게 나와서.. 그 경우엔 거의 여지없이 null 때문이더군요.

즉 null 과 % 는 일치하지 않기 때문에.. nvl(검색컬럼, '%') like '%' 로

해주는 경우도 있지만... 역시... 비용이 문제입니다. 이렇게 해버리면 비용이

발생되기에..

일단 지금까지는 그다지 비용을 신경쓰지 않아도 될만한 경우에 사용하고

신경을 써야할 부분엔 동적쿼리를 사용했습니다.

혹은 null인 데이터중 null 이면 안될 부분은 다르게 수정을 하구요.

음.. 혹 다른 방법이 있을지 궁금해서 문의드립니다~

아, 그리고 해당 data를 수정하는것도 방법이긴 한데

null이랑 공백이랑 차지하는 사이즈가... 틀리겠죠?

 

by 마농 [2009.10.19 10:19:35]
쿼리 실행을 분리합니다.
프로그램에서 if 문으로 분기시키는 방법이 있구요.
쿼리에서는 union all 로 두개의 쿼리를 붙이는 방법이 있습니다.
SELECT * FROM t WHERE :입력조건 IS NULL
UNION ALL
SELECT * FROM t WHERE :입력조건 IS NOT NULL AND 검색컬럼 LIKE :입력조건 || '%'

by 조조맹덕 [2009.10.19 10:44:13]
아... 분리한다고 해서 case나 decode를 말씀하시나 했는데..
union.. 좋은 아이디어이네요
큰 도움이 되었습니다.
전에 마농님한테 동적쿼리 안쓰고 복수 in 문 쓰는것도 돔 받고...
감사합니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입