database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 29501 게시물 읽기
No. 29501
like문에서 특수문자 escape하는 법...
작성자
like문
작성일
2010-01-10 01:54
조회수
9,162

SELECT `no` FROM `test` WHERE `subject` LIKE "%검색할문자열"

 

이러한 쿼리가 있는데요...

 

검색할 문자열이 일반적인 경우에는 아무~ 문제 없이 잘 되는데, "["이나 "]" 혹은 "\"때문에 어렵네요.

 

[RE] 안녕하세요

\[RE\] 안녕하세요

 

위 두 가지 경우를 뽑아내려면 어떤 쿼리를 날려야 할까요? 더불어서, 혹시 PHP에서 이러한 특수문자를 일괄처리할 수 있는 방법(함수 등)을 알고 계시면 알려주세요...ㅠㅠ

 

mysql_real_escape_string()같은 것을 쓰면 이스케이프는 잘 해주는데 LIKE문에서는 무용지물이네요...

이 글에 대한 댓글이 총 1건 있습니다.

일단 \ (backslash)가 LIKE에서의 특수기호임은 알겠는데, [ ] (bracket)은 왜 문제가 되는지 모르겠습니다. 아래 링크를 참조해 주세요.

http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html#operator_like

 

제시해주신 두 경우는, 정확한 문법은 아니지만, 아래와 같이 검색할 수는 있습니다.

SELECT ... FROM ... WHERE ... LIKE '%[RE%]%'

보다 정확하게 찾기 위해서는 OR가 필요하겠죠.

SELECT ... FROM ... WHERE ... LIKE '[RE]%' OR ... LIKE '\\\\[RE\\\\]%'

 

DB상에 왜 [, ] (Bracket)이 이스캐이핑 되어 들어갔는지 확인해보시고, 가능한 경우 제시하신 DB-dependent한 escaping 함수를 사용하시고, 부득이한 경우 addslashes/stripslashes 조합만을 사용하시는게 좋겠습니다.

박현우(lqez)님이 2010-01-11 11:10에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
29504쿼리 시간이 오래걸려요.. [1]
FIL
2010-01-11
6525
29503MySQL Replication error [7]
jayforest
2010-01-11
7139
29502mysql client를 쉘에서 수동할때..
정대원
2010-01-11
5893
29501like문에서 특수문자 escape하는 법... [1]
like문
2010-01-10
9162
29500Data 디렉토리 Tar로 넘겨도 되나요? [2]
한영호
2010-01-08
6143
29499MySQL 프로세스 개수
DM
2010-01-08
6393
29498통계 내는 쿼리가 궁금합니다. [4]
궁금이
2010-01-07
6864
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.021초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다