[SQL] "최고의 경기"에 의해 MySQL의 순서
SQL"최고의 경기"에 의해 MySQL의 순서
나는 라이브 검색을 사용하여 해당 테이블을 검색 할 단어를 포함하는 테이블 및 입력 필드가 있습니다. 현재, 나는 테이블을 검색하려면 다음 쿼리를 사용 :
SELECT word FROM words WHERE word LIKE '%searchstring%' ORDER BY word ASC
문자열이 단어의 시작 부분에서 발견되는 사람이 먼저 와서 문자열이 나중에 단어에 표시되는 위치를 사람들이 마지막으로 올되도록 결과를 정렬 할 수있는 방법이 있습니까?
예 : 현재 반환 'HAB'검색
하지만 난 그것을처럼 이런 식으로 거라고 :
또는 적어도이 방법에서 :
사람이 좀 도와 수 있다면 좋은 것입니다!
해결법
-
==============================
1.(단어, 끝 단어의 중간에, 시작 워드) 그에게 첫 번째 방법을 수행하려면이 같은 시도 :
(단어, 끝 단어의 중간에, 시작 워드) 그에게 첫 번째 방법을 수행하려면이 같은 시도 :
SELECT word FROM words WHERE word LIKE '%searchstring%' ORDER BY CASE WHEN word LIKE 'searchstring%' THEN 1 WHEN word LIKE '%searchstring' THEN 3 ELSE 2 END
(일치하는 문자열의 위치) 그에게 두 번째 방법을 수행하려면이 기능을 찾아 사용
SELECT word FROM words WHERE word LIKE '%searchstring%' ORDER BY LOCATE('searchstring', word)
또한 경우 타이 브레이커, HAB에 예를 들어, 둘 이상의 단어가 시작을 할 수 있습니다. 이를 위해, 나는 좋을 것 :
SELECT word FROM words WHERE word LIKE '%searchstring%' ORDER BY <whatever>, word
HAB 함께 그룹화되어 알파벳 순으로 정렬된다 HAB으로 시작하여 복수의 단어 인 경우, 단어 시작.
-
==============================
2.이 방법을 시도해보십시오
이 방법을 시도해보십시오
SELECT word FROM words WHERE word LIKE '%searchstring%' ORDER BY CASE WHEN word = 'searchstring' THEN 0 WHEN word LIKE 'searchstring%' THEN 1 WHEN word LIKE '%searchstring%' THEN 2 WHEN word LIKE '%searchstring' THEN 3 ELSE 4 END, word ASC
-
==============================
3.당신은 단어 내에서 검색 문자열의 시작 위치를 반환하는 INSTR 기능을 사용할 수 있습니다,
당신은 단어 내에서 검색 문자열의 시작 위치를 반환하는 INSTR 기능을 사용할 수 있습니다,
ORDER BY INSTR(word,searchstring)
검색 문장은 두 개의 다른 단어에서 같은 위치에 나타날 때 결과 집합이 더 결정적하려면 순서에 의해 두 번째 식을 추가 :
ORDER BY INSTR(word,searchstring), word
(예를 들어, HAB를 검색 문장은 샤블리 초라한 모두 제 2 위치에 표시)
from https://stackoverflow.com/questions/18725941/mysql-order-by-best-match by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL : 변수에 따라 선택 동적 열 이름 (0) | 2020.04.20 |
---|---|
[SQL] 어떻게 스파크 RDD에 대한 SQL ROW_NUMBER 동등한를받을 수 있나요? (0) | 2020.04.20 |
[SQL] SQL 서버 : 나는 SYS 테이블을 통해 INFORMATION_SCHEMA 테이블을 사용해야합니까? (0) | 2020.04.20 |
[SQL] 오라클은 : 큰 XML 파일을로드? (0) | 2020.04.20 |
[SQL] SQL은 : 저장 프로 시저 절에 어떻게 값을 전달합니다 (0) | 2020.04.20 |