2012-01-26 2 views
1

나는 포스트 그레스를 사용하고, 내가 먼저 사용자 이름과 마지막 이름이 포함 된 "사용자"테이블이 있습니다 (매칭을SQL select - 하나의 문자열을 두 개의 열과 일치시킬 수 있습니까?

id | first_name | last_name | ... 
----------------------------------- 
1 | daniel  | johnston | 
2 | jane  | austin | 

나는 하나의 문자열을 기반으로 사용자 집합 선별을 사용하고 싶습니다를 first_name과 last_name 두 부분의 시작 부분에 "j"를 검색하면 두 레코드가 모두 반환됩니다. "jo"를 검색하면 첫 번째 레코드 만 반환됩니다 ..

효율적인 방법이 있습니까? SQL 만 사용하여 포스트그레스에서이 쿼리를 수행 할 수 있습니까? 아니면 몇 가지 선택 호출을 한 다음 나중에 다른 프로그래밍 언어를 사용하여 결과를 포맷해야합니까?

감사!

답변

2

OR 연산자를 사용하지 않는 이유는 무엇입니까?

SELECT id, first_name, last_name 
FROM users 
WHERE (first_name LIKE 'jo%' OR last_name like 'jo%') 

first_name 또는 last_name이 'jo'로 시작하면 행이 반환됩니다.

효율성과 관련하여이 유형의 '시작'쿼리는 쿼리 방법에 따라 인덱스를 활용할 수 있지만 전체 텍스트 인덱스를 사용하면 더 효율적일 수 있습니다 - 특히 사용하려는 경우 문자열의 양쪽에있는 와일드 카드 (. 예를 들어, LIKE '% 조 %') 더 많은 정보는 여기에서 찾을 수 있습니다 :

관련 문제