저 처럼 mybatis, ibatis를 사용하지 않는 분이 있으실 수도 있으니.. 올려봅니다..
스프링 백엔드에서 sql문을 작성하던 중, 에러가 났습니다.
참고로 저는 아래 "검색문자열"을 변수로 받습니다. 이후에 나오는 search_content라는 string 변수입니다.
sql = "SELECT * FROM TABLE1 WHERE column1 like '%?%';";
ps = conn.prepareStatement(sql);
ps.setString(1, "검색문자열");
rs = ps.executeQuery();
이런식으로 했는데 고정된 String이나 Int의 경우 잘 되던 것이 되지 않았습니다.
검색을 아무리 해봐도 모든 방법이 안 되고, mybatis나 ibatis에서는 like에서 %를 사용할 때 다른 문법이 있다고 했습니다.
그러나 저는 DB 다룰 때 따로 설정해둔 것도 없고 해서 정말 하루종일 뻘짓을 하다가 sql에 그냥 string만 쭉 넣어보았습니다.
sql = "SELECT * FROM TABLE1 WHERE column1 like '%검색문자열%';";
rs = ps.executeQuery();
근데 이렇게 하니 원하는 결과가 나오더라구요.. 그래서 저 문자열을 만들기 위해 갖은 노력을 다 했습니다.
근데 결국 뻘짓하다 찾은 최선의 방법이 다음과 같습니다.
//search_content는 검색할 문자열을 담은 string 변수입니다.
sql = "SELECT * FROM TABLE1 WHERE column1 like '%"+search_content+"%';";
rs = ps.executeQuery();
코드적으로 좋은 방법은 아닌 것 같고, mybatis나 ibatis같은 프레임워크를 사용하는 게 좋아보이지만 저는 임시적인 처치가 필요했기 때문에 이 방법을 택했습니다.
혹시 저 처럼 안되시는 분들은 우선 위의 방법을 시도해보시고, 후에 프레임워크를 적용해 아래의 문법을 참고해 작성하시는 것을 추천드립니다. 아래 자료의 출처는: https://roqkffhwk.tistory.com/128 [야근싫어하는 개발자] 입니다.
1. 오라클
ibatis : WHERE column1 LIKE '%'||#search_value#||'%'
mybatis : WHERE column1 LIKE '%'||#{search_value}||'%'
2. MS-SQL
ibatis : WHERE column1 LIKE '%'+#search_value#+'%'
mybatis : WHERE column1 LIKE '%'+#{search_value}+'%'
3. MYSQL
ibatis : WHERE column1 LIKE CONCAT('%',#search_value#,'%')
mybatis : WHERE column1 LIKE CONCAT('%',#{search_value},'%')
'Web > 기타' 카테고리의 다른 글
MME 웹 디자인 _ Moqups, SublimeText (0) | 2020.04.17 |
---|