본문 바로가기

공백 들어간 DB 데이터 검색

반응형
예를들어 검색창에 베르나르베르베르 라고 검색을 했다~

하지만 DB 속에는 베르나르 베르베르 라고 저장이 되어있는 자료는 어떻게 검색을 해야할까?

(설마 둘의 차이를 못느끼진 않겠지? -_-ㅋㅋㅋ)



혹은 반대로 검색창에 베르나르 베르베르 라고 검색을 했는데

DB속에는 베르나르베르베르 라고 저장이 되어있다면~?



이것을 해결하는 것은 너무나도 쉽다~! 간단한 함수 하나면 끝~!

일단 전자의 경우 MySQL 쿼리문을 수정해주면 된다. 예를들어



ex)

$keyword = $_POST['keyword']; //넘어오는 값 변수 설정

$keyword = trim($keyword); //앞뒤 공백 제거

$query = "select author from books where author like %$keyword%"; //쿼리문



이런식으로 되어있는 쿼리문에 간단한 함수만 추가하면 된다.

위의 예시에서 3번째줄에 있는 where author를 주목하라~~ 어떻게 바꾸냐면



$query = "select author from books where replace(author, ' ', '') like %$keyword%";



노란줄 부분을 잘 보면 replace 라는 함수를 추가해놓았다. 위 함수는

파라메터를 3개 받는데 repalce(필드명, 바꿔야되는 문자, 바꿀문자) 이렇게 써주면 된다.

위 같은 경우 author라는 필드의 값에 있는 ' '(공백)이 ''(공백없음)으로 바뀐다.

쿼리를 이렇게 해놓으면 replace로 바꿔놓은 필드들의 값은 공백이 사라진다~ ㅎㅎ

검색할때 베르나르베르베를 검색하면 어떻게 띄어쓰기가 되어있던 검색이 된다.



자 그럼 위에 적었던 상황중 2번째 상황~



이것도 마찬가지~ 쉽다 ㅋㅋ 여긴 MySQL 카테고리라고 설정해놨지만...

이건 PHP에서 쓰이는것이다.(위에도 사실 PHP로 코딩한거지만~ㅋㅋ)



ex)

$keyword = $_POST['keyword']; //넘어오는 값 변수 설정

$keyword = trim($keyword); //앞뒤 공백 제거



이부분에서 $keyword 문자열의 공백을 제거하는(trim으로 앞뒤는 제거했지만 문자 사이사이) 함수를 이용해 문자열의 공백을 없애면 된다~! 어떻게 하느냐~ 앞의 replace 랑 비슷하다~~ php라서 다른 이름을 쓰는 것 빼곤 쓰는데는 크게 지장이 없다.(물론 기능도 다르지만 큰 기능은 비슷하므로~)



이렇게 써보자~ str_replace(바뀌는 문자, 바꿀 문자, 문자열) 이름과 순서가 다르다~

이 함수는 문자열의 문자를 바꿔주는 역할을 한다. 아래와 같이 쓴다.



str_replace(' ', '', $keyword); 이렇게 하면 $keyword 속에 있던 공백을 없애준다.

이걸 적용 후 검색창에 베르나르베르베르를 치던 베르나르 베르베르 를 치던

베르 나 르 베 르 베르 를 치던 DB쿼리에는 베르나르베르베르 로 검색이 들어간다. 그럼 앞의 둘의 상황을 조합하면



베르나르베르베르를 어떻게 검색하든 베르나르베르베르 글자가 들어가면 다 나온다

 

반응형

댓글


Copyright ⓒ SmartWeb All rights reserved.