2010-12-19 3 views
0

영화 목록을 만들려고합니다. 당연히SELECT 쿼리에서 시작 단어 제외

SELECT * FROM ms_films WHERE film_title LIKE 'H%' 

:

SELECT DISTINCT LEFT(film_title, 1) FROM ms_films ORDER BY film_title 

두 번째로 내가 특정 문자로 시작하는 모든 영화를 선택하는 쿼리를 가지고 : 우선이 영화에서 모든 첫 글자를 유도 할 수있는 쿼리를 가지고 꽤 많은 영화들은 'The'또는 'De'라는 네덜란드어로 시작합니다. 이 두 검색어에서 시작 단어를 제외 할 수있는 방법이 있습니까?

기본적으로 '다음 3 일'과 같은 영화는 두 검색어에서 모두 N으로 분류해야합니다.

답변

3

당신은

SELECT * FROM ms_films WHERE REPLACE(film_title, "The", "") LIKE 'H%' 

는 분명히 이것은 모든 발생을 제거 그들을 제거하기 위해 REPLACE를 사용할 수 있지만 귀하의 경우에는 문제가되지해야한다.

더 복잡한 검색 패턴이 필요한 경우 LIKE 대신 REGEXP (또는 별칭은 RLIKE)을 사용할 수도 있습니다.

+2

단점 :이 쿼리에는 인덱스가 사용되지 않습니다. – Mchl

+0

@Mchl : 잘 지적했다. – nico

1

이것이 응용 프로그램의 일반적인 작업 인 경우 제목의 첫 번째 (실제) 문자가 저장되는 CHAR (1) 열을 사용하는 것이 좋습니다. 이 칼럼에 색인을 생성 할 수 있습니다.이 칼럼은 1 바이트이기 때문에 매우 빠릅니다.

+1

아주 좋은 제안입니다. 난 이걸 할거야. 감사. – Bob

관련 문제