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 |