2011-07-06 6 views
2

데이터베이스에서 문자열을 선택하는 데 문제가 있습니다. 문제는 McDonald's 행에 있고 문자열이 mcdonalds 인 경우 검색 결과를 찾지 못하는 것입니다. 어떤 제안?MySQL이 특수 문자로 문자열 선택

나는 LIKEWHERE 문장에 사용하고 있다는 것을 잊어 버렸다.

+1

올바른 용어를 찾으십시오. "Joe"를 검색하면 "Jane"을 찾을 수 없으므로 놀랄 이유가 무엇입니까? (또한 맥도날드가 너무 많아서는 안됩니다.) –

+0

어때요? 'row = 'mcdonalds ''를 사용한 직선 항등? – Dirk

+0

지금은 LIKE를 사용하고 있지만 보이지는 않습니다. LIKE row '% $ string %' – Luka

답변

6

검색 요구 사항이 특정 문자를 무시하는 경우 검색시 빈칸으로 replace을 입력하여 검색 조건을 제거 할 수 있습니다. 그래서 당신이 필요로 replace에 매개 변수로 작은 따옴표를 지정하려면

SELECT * 
FROM restaurants 
WHERE replace(name, '''', '') like '%mcdonalds%'; -- This will match "McDonald's" 

참고로, 문자 그대로 작은 따옴표 (')는 두 배로 따옴표 ('')로 기록됩니다

이 답변으로 문제가 해결 4 개의 따옴표가 연속적으로 ('''') - 각 끝에 2 개 및 중간에 실제 따옴표가 두 배로 표시됩니다.

0

나는 당신이 LIKE 연산자를 찾고 있습니다 생각 '\'이스케이프를 적절한 문자에 먼저 추가하도록 쿼리를 보내는 것일 수 있습니다.

http://www.php.net/manual/en/function.mysql-real-escape-string.php

을 ...하지만 그것은 단지 상황의 전체 문맥에서 추측됩니다 : PHP이 잘 수행합니다.

+1

downvote를 이해하지 마십시오. OP는 그/그녀가 이미 같이 사용하고 있다고 진술하지 않았다. upvote로 보상. –

+0

입력 문제가 아니라 mysql 함수에 관한 질문입니다. TRIM 함수와 같은 것이지만, 공백을 제거하는 중 일부 특수 문자 (')를 제거하고 싶습니다. – Luka

관련 문제