2013-07-23 3 views
0

나는 고객의 성명과 성을위한 fileds와 다른 세부 정보가있는 테이블을 가지고 있습니다.결합 된 필드에서 mysql 검색

양식에서 사용자는 내가 일하는 검색을 입력 할 수 있지만 고유 한 성격 (예 : 성 또는 성)의 john 만 검색합니다. 이 모든 작동 확인

그러나 사용자가 두 필드의 조합이 될 존 스미스 입력하는 경우 검색 방법을 모릅니다. 현재 데이터 구조로이 검색을 수행하려면 어떻게해야합니까?

필자가 사용하는 select 문에서 필드를 추가하는 시도 :

Concat_ws (' ', firstname, lastname) as fullname 

하지만 오류

내가 이름을 포함하는 새로운 필드를 생성해야이 생성 된 필드를 사용하여 발생 캔트?

고맙습니다.

답변

1

조건에 별칭을 사용하지 마십시오. 대신 완전한 기능을 사용하십시오.

예 :

where Concat_ws(' ', firstname, lastname) like '%<your search>%' 

하지만, 그래, 그것은 성능
을 최적화 그리고 그것은 당신이 원하는 분야의 어떤 조합에 따라 함수 이름

+0

감사합니다. 나는 당신이 해안의 칼럼에 대해 말하는 것처럼 구문이 잘못되었다. 이제 올바른 장소에서 작동합니다. 나는 전체 텍스트 옵션을 살펴볼 것이다. 감사합니다. – Ray

1

후 공간이 그나마 있는지 확인하기 위해 새 필드를 만들 수있는 좋은 생각이다. 귀하의 예를 들어 firstname = 'john' AND lastname='smith' 일을 할 것이지만, 아마도 당신이 필요하지 않습니다.

가장 좋은 해결책은 fulltext search입니다.

+0

감사합니다. 전체 텍스트 검색도 연구하겠습니다. – Ray