에서
덕분에 트릭을해야 다음, (따라서 약간 덜 효율적인 쿼리를 얻을).
SELECT Title
FROM myTable
WHERE (Title LIKE 'x%' OR Title LIKE 'THE x%')
-- AND Title NOT LIKE 'THE [^T]%'
ORDER BY Title
노트 (당신은,이 답변의 끝에 제안을 테이블을 수정하는 레저를 볼 수있다을 경우) :
- X 지정 원하는 문자 (예 : LIKE 'A % '등)
- 여분의 조건 만 "X"는 문자 "T"인 경우에 필요하다 "제목이 마음에 들지는"(이 기능적으로, 그렇지 않으면 중복이지만)
을 결과를 변경하지 않습니다 - I [^xyz]
(예 : )의 지원을 확신 할 수 없습니다. T 문자 x, y 또는 z)이므로 [^T]
은 긍정적 인 의미 인 [A-RS-Z0-9]
으로 바꿀 수 있습니다.
고려해야 할 다른 중지 단어가 있지만 ("A", "AN", "OF"...) 책이나 영화 제목의 경우 "THE"만 고려하는 것이 일반적입니다.당신은 다른 기사를 처리해야하는 경우, 논리는 같이 확장 할 수 있습니다 :
SELECT Title
FROM myTable
WHERE (Title LIKE 'x%'
OR Title LIKE 'THE x%'
OR Title LIKE 'A x%'
OR Title LIKE 'AN x%')
-- the following is only needed when "x" is either the letter T or A.
-- AND (Title NOT LIKE 'THE [^T]%'
-- AND Title NOT LIKE 'A [^A]%'
-- AND Title NOT LIKE 'AN [^A]%'
-- )
ORDER BY Title
더 나은 솔루션이 있습니다, 당신이 테이블의 내용을 수정할 수 있습니다합니다. 이들 중 일부는 하나 또는 여러 개의 추가 열을 사전 계산하는 것을 의미합니다 (새 레코드가 추가 될 때 등).
- 여분의 열이 바람직하지 않은 최고의 노이즈 단어 박탈 제목을 포함하는 "열 _ 정렬"접근,이 게시물에 예 클리 터스 '대답을 참조하십시오. OP의 초기 문자 검색 문제에서 필터링 필드와 같은 목적 외에도이 열을 사용하여 더 친숙하고 합리적인 방법으로 초기 문자와 관련이없는 필터로 생성 된 제목 목록을 정렬 할 수 있습니다 및/또는 제목의 시작 (연도 별 검색).
- 위의 변형은 "효과적인"초기 문자 (원하지 않는 잡음을 지나치는 문자) 만 저장하는 것이므로 더 작은 열을 만들지 만 덜 범용적인 문자는 만들지 않습니다.
- 제목 열 자체를 업데이트하여 제목의 수정 된 형식을 저장할 수 있습니다. 이로 인해 관계없는 선행 노이즈 단어가 괄호 사이의 문자열 끝에 이동됩니다. 이 관행은 서지 형식 카탈로그에서 매우 일반적입니다.
출처
2010-03-10 05:53:08
mjv
안녕하세요. 많은 노력에 감사드립니다. 그리고 난 "좋아해"에 대한 결과를 얻었습니다. "좋아하지 않습니다"에 대한 결과를 얻지 못했습니다 ... 수행 할 변경 ... *에서 영화 선택 where film_status = 'Active' AND (user_id = '3'또는 distributor = '3') AND ('T %'또는 'T %'또는 'T %'또는 '%'와 같은 영화 이름 또는 'T %'또는 film_name LIKE '와 같은 영화 이름 T % '또는'T % '와 같은 영화 이름) AND AND (영화 이름은 [^ T] %'와 같지 않고 영화 이름은 '[^ T] %'AND 영화 이름과 같지 않음 '[^ T] %'AND AND '[^ T] %'와 (과) 같은 영화 이름이 아님) 주문 필름 이름 – Fero
이 위의 질문입니까? – Fero
@Fero : 예, 댓글의 검색어가 맞습니다. 대/소문자를 구분하지 않고 mySQL이 텍스트를 처리하도록하는 방법이 있습니다. 이렇게하면 "The"등으로 이러한 모든 여분의 조건을 해결할 수 있습니다. – mjv