* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
Linux 64bit | |
9.3 | |
9.6.6.004 | |
java |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
SQL select 절 실행 시 버그가 발생하여 알려 드립니다. (살짝 당황스러움)
WHERE 조건절이 동작 안합니다.
버그 출현 방법
SELECT * FROM [테이블]
WHERE [검색필드] IN ('항목1', '항목2', '항목3') OR [검색필드] LIKE '항목1%'
- 설명 : IN절에 있는 값중에서 LIKE절에 '항목%' 형식으로 넣었을때
실제 사용한 쿼리1
SELECT BBS_TITLE FROM bbs_notice_msg_tb
WHERE BBS_TITLE IN ('춘천시 행사 안내', '움직이는 경제학교') OR BBS_TITLE LIKE '움직이는 경제학교%'
실제 사용한 쿼리2
SELECT * FROM sms_member_tb
WHERE mem_nm IN ('채신희', '권지은', '채은율') OR mem_nm LIKE '채신희%'
오류를 발견해주셔서 감사드립니다.
v10.x 버젼에서는 수정 작업을 했는데, 9.3대에 반영이 되지 않은 부분인 것 같습니다.
내부적으로 optimiztion 작업을 하면서 질의 rewrite를 하게 되는데, 해당 질의가 잘 못 rewrite되는 현상입니다.
우선 조건의 순서를 변경하시거나, like 질의의 값을 변경하시면 원하시는 결과를 얻을 수 있습니다.
SELECT BBS_TITLE FROM bbs_notice_msg_tb
WHERE BBS_TITLE LIKE '움직이는 경제학교%' OR BBS_TITLE IN ('춘천시 행사 안내', '움직이는 경제학교')
또는
SELECT BBS_TITLE FROM bbs_notice_msg_tb
WHERE BBS_TITLE IN ('춘천시 행사 안내', '움직이는 경제학교') OR BBS_TITLE LIKE '움직이는 경제학%'
조만간 9.3에 반영하도록 하겠습니다.