Mysql 한글검색

DB 2012. 3. 17. 20:29
SELECT * FROM table WHERE BINARY(text) like %한글%


column 의 type은 BINARY 또는 VARBINARY 여야 한다.

(기존에 VARCHAR 였어도 상관없다. column type을 바꾸면 아무 부작용 없이 컨버팅 된다)


ibatis 에서는 다음과 같이 쓰자.

 <select id="getArticleListWithTitle" parameterClass="HashMap" resultClass="beans.Article">
  SELECT *
  FROM board_board
  WHERE boardName = #boardName:VARCHAR# AND BINARY(title) LIKE CONCAT('%',#titleKeyword:VARCHAR#,'%') 
  ORDER BY articleIndex DESC
 </select>


**
그렇다면 '%' 는 어떻게 표현할까?

mysql 에서는 \% 로 표현한다.

인자로 넘겨주기 전에 replace 로 % 를 \\% 로 바꾸어 주도록 하자. ( titleKeyword.replace("%", "\\%") )



beans class의 member 의 type을 바꿀 필요는 없다.

다만 아래와 같은 처리가 setter 에서 필요하다.

Util.toHTML() 은 문맥과 무관하니 없다고 생각하고 보자.

 public String getTitle() {
  return title;
 }
 public void setTitle(byte[] title) {
  try {
   this.title = Util.toHtml(new String(title,"utf-8"));
  }
  catch(Exception e)
  {
   e.printStackTrace();
  }
 }

'DB' 카테고리의 다른 글

Mysql에서 한글이 깨질 때  (0) 2012.03.17
Mysql 대소문자 구분해서 쿼리하기  (0) 2012.03.17
Mysql MYSQLNonTransientConnectionException  (0) 2012.03.17
Mysql 에서 foreign key 설정  (0) 2012.03.17
Posted by 휘사마
,