2016-07-22 2 views
0

나는 삼성 전화와 같은 값을 가진 열 field이있는 표가 있습니다.Postgres의 문자열에 전체 단어가 있는지 검색하는 방법

"Samsung"또는 "phone"문자열을 검색하면 어떻게해야이 행을 얻을 수 있습니까? 나는 "Sam"이나 "ph"를 검색 용어로 사용하면 어떤 결과도 원하지 않습니다.

나는 ILIKE 연산자를 시도했지만 내가 사용하는 경우 : 정확히 동일해야 제목하다고 생각

select * 
from mytable 
where title ILIKE 'Samsung'; 

그것은 어떤 결과를 제공하지 않습니다. 또한 title ILIKE '%Samsung%'을 사용하면 부분 문자열에 대해 작동합니다.

간단히 말해 입력 된 검색어가 내 칼럼에 전체 단어로 존재하면 검색 결과 만 제공하면됩니다. 나는 여러 검색어 값이있는 경우

또한, 다음 단어 일치 당신은 이것에 대한 정규 표현식을 사용할 수있는 결과

+0

"단어"로 정확히 무엇을 의미합니까? – melpomene

+0

여기에있는 단어는 검색 용어가 그대로 DB에 입력 된대로 존재해야한다는 문맥에 있습니다. –

답변

3

해야한다 :

where title ~* '(\mphone\M)|(\msamsung\M)' 

위는 반환 값 곳 phone 또는 samsung은 완전한 단어입니다. 정규 표현식 수식어 \m\M은 전체 단어에만 패턴을 일치시킵니다.

정규식 연산자 ~*은 대소 문자를 구분하지 않습니다. 위 표현식은 Samsung Phone 또는 Google Phone을 반환하지만 Sam's House은 반환하지 않습니다.

당신이 더 많은 단어를 추가하려면

그냥 "또는"연산자를 검색 이런 종류의 초고속 될 t1o하지 않을 것을 |

where title ~* '(\mphone\M)|(\msamsung\M)|(\mbhat\M)' 

주를 사용하여 추가 할 수 있습니다. 정규 표현식은 값 비싸지 만 색인을 사용할 수 없습니다.

+0

감사합니다. –

관련 문제