SERVER/LARAVEL & PHP
LIKE문으로 검색하고 연관성 깊은 것부터 출력하기
나나나나나나나ㅏ나난ㄴ나ㅏ나나
2020. 2. 25. 18:24
728x90
환경
- Lalavel PHP
- mySql
문제
보통 유사한 결과값을 찾을 때 like문을 사용하면 쉽게 찾을 수 있다.
*데이터베이스*
SLECT *
FROM user
WHERE name LIKE '%이름%'
*Laravel*
$query = $this->select('*')
->where('name', 'LIKE', '%이름%');
하지만 이러한 데이터가 있을 때 연관성이 깊은 순서대로 출력하고 싶은데 어떻게 해야할까 검색을 하다가 발견했다!
데이터 | 출력하고 싶은 순서 |
이름1 | 이름 |
이름 | 이름1 |
1이름 | 1이름 |
바로 ORDER BY CASE THEN을 사용하는 것이다!
해결
*데이터베이스*
SELECT *
FROM user
WHERE name LIKE '%이름%'
ORDER BY CASE WHEN name = '이름' THEN 0
WHEN name = '이름%' THEN 1
WHEN name = '%이름%' THEN 2
WHEN name = '%이름' THEN 3
ELSE 4
END
*Laravel*
$query = $this->select('*')
->where('name', 'LIKE', '%이름%')
->orderBy(DB::raw('
CASE
WHEN name="이름" THEN 0
WHEN name="이름%" THEN 1
WHEN name="%이름%" THEN 2
WHEN name="%이름" THEN 3
ELSE 4
END
));
이렇게하면 원하는 유사한 결과값을 정렬된 상태로 가져올 수 있다 ☺️
728x90