2012-09-24 3 views
2

열에있는 값의 시작 부분에서 'A'와 'The'를 제외하려고합니다.SQL 제외 검색 결과의 처음부터 'The'

AND artist LIKE LOWER('A%') AND artist NOT LIKE LOWER('A %') 

문제는이 'A %'로 시작하는, 나 예술가 'A %'로 시작을 포기하지 않을 나에게 예술가를 줄 것이다, 그러나 것 : 나는 문자 'A'등으로 시작하는 아티스트를 찾고 있어요 'AA %'로 시작하는 아티스트도 제외하십시오.

일부 밴드가 스스로 'A Apple'이라는 이름을 지정하면 내 검색에서 제외됩니다. 'A A %'를 제외하지 않고이 쿼리를 어떻게 수행 할 수 있습니까?

감사합니다. 제이

+2

제이, 스택 오버플로에 오신 것을 환영합니다. 질문 할 때 사용중인 데이터베이스에 태그를 지정하고 샘플 입력과 출력을 제공하는 것이 좋습니다. –

+0

그리고 당신의 질문에 대한 대답은 당신이 할 수 없다는 것입니다. 이름의 시작 부분에 "A Apple"과 "A"의 다른 용도를 어떻게 구별 할 수 있습니까? 초기 "A"를 제거 하시겠습니까 아니면 제거하고 싶으십니까? –

답변

0

데이터베이스 구조를 제어 할 수 있습니다, 이것은 큰 데이터베이스 인 경우 특히, 그것은 수도 경우 검색에 표시되거나 정렬에 사용되는 아티스트의 이름이 포함 된 'SearchArtist'열을 추가하는 것이 더 유용합니다. 이렇게하면 전체 이름을 표시 할 수 있지만 검색 가능한 이름순으로 정렬 할 수 있습니다.

검색 아티스트 형식 표 순서 선택 searchArtist;

롤링 스톤즈 앞서 스테판 울프의 목록에 나타나는 그런 식으로

...

0
AND artist LIKE ('A%') 
AND (artist NOT LIKE LOWER('A %') OR artist LIKE ('A A%')) 

나는 LIKE 문이 성능에 매우 친숙하지 않기 때문에이 취미 또는 작은 데시벨입니다 바랍니다.

0

이것은 일반적으로 "Rolling Stones, The"라는 형식의 아티스트 이름이 포함 된 두 번째 입력란에 "Rolling Stones"라는 표시 이름이 붙어서 해결할 수있는 일반적인 문제입니다. 검색은 전자에 대해 수행되지만 결과는 후자를 사용하여 표시됩니다. 당신은 당신이있어 데이터와 함께 붙어 있다면

는, 당신은 같은 것을 필요

AND UPPER(artist) LIKE 'A%' 
AND (UPPER(artist) LIKE 'A A%' OR NOT (UPPER(artist) LIKE 'A %')) 
+0

내가 쓰고있는 다른 Richard는 대답했다. 나는 왜 OP와 그 대답에서 술어의 RHS에'LOWER()'가 적용되는지 이해하지 못한다고 고백해야한다. – RET