2013-07-29 5 views
20

node-mysql에서 MySQL LIKE 문을 이스케이프하려면 어떻게해야합니까? 구문 오류입니다노드 MySQL 이스케이프 LIKE 문

'SELECT * FROM card WHERE name LIKE \'%\'hello\'%\'' 

에서

"SELECT * FROM card WHERE name LIKE '%" + connection.escape(req.body.search) + "%'" 

결과의 라인을 따라

뭔가.

connection.query("SELECT * FROM card WHERE name LIKE '%?%'", req.body.search, function() {}); 

대체 구문을 사용하면 비슷한 구문 오류가 발생합니다. 나는 또한 시도했다

connection.query("SELECT * FROM card WHERE name LIKE ?", '%' + req.body.search + '%', function() {}); 

단지 '%'기호를 이스케이프합니다.

+0

셋째 예를 들어 같은 성공 정확, 당신이보고있는 정확한 문제가 무엇인가를 했어 ([email protected] 사용)? 문자 그대로 퍼센트 기호가 [trickier] 인 문자열을 검색하려는 경우 (http://stackoverflow.com/questions/2106207/escape-sql-like-value-for-postgres-with-psycopg2/2106443#2106443)). – bobince

답변

24

하지 않는 것이 나를 위해 잘 작동하기 때문에, 당신의 마지막 예제에서 %을 탈출 왜 확인 :

// lifted from my code: 
var value = 'ee20e966289cd7'; 
connection.query('SELECT * from django_session where session_key like ?', '%' + value + '%', ...) 

// Result: 
[ { session_key: '713ee20e966289cd71b936084a1e613e', ... } ] 

내가 드라이버에서 디버깅을 (mysql.createConnection에 인수로 debug:true을 통과), 그것은 '아무튼 t는 퍼센트 기호를 탈출 :

{ command: 3, 
    sql: 'SELECT * from django_session where session_key like \'%ee20e966289cd7%\'' } 

(그것은 작은 따옴표를 탈출 않습니다,하지만 표시 목적으로 만입니다)

,

+1

고마워. 나는 미쳐 가고 있다고 생각합니다. – dtsn

9

내가

"SELECT * FROM card WHERE name LIKE " + connection.escape('%'+req.body.search+'%')