PHP

[mysql] 테그 검색에 최적화된 함수 : FIND_IN_SET

미스털이 사용자 2023. 9. 20. 16:44
반응형

 

위와 같이 쉼표로 구분된 태그 문자열을 검색할 때엔 FIND_IN_SET만큼 좋은게 없다.

 

FIND_IN_SET(항목1, 항목2)

항목1 : 검색 문자열

항목2 : 쉼표로 구분된 대상 문자열

 

여기서 반환되는 값은 찾은 위치의 값이다.

 

SELECT FIND_IN_SET('항목1', '항목1,항목2,항목3') AS result1; #1
SELECT FIND_IN_SET('항목1', '항목2,항목1,항목3') AS result1; #2
SELECT FIND_IN_SET('항목1', '항목2,항목3,항목1') AS result1; #3
SELECT FIND_IN_SET('항목1', '항목7,항목8,항목9') AS result1; #0
 

위 처럼 FIND_IN_SET을 이용해 쿼리를 실행하면

각각 1, 2, 3, 0값을 도출하게 된다.

 

즉, 찾을 위치의 값을 반환하지만 만약 해당값을 못찾으면 0을 반환한다.

 

SELECT
	wr_tag 
FROM 
	g5_board_new 
WHERE
	(
	 FIND_IN_SET('추천만화', wr_tag) <> 0  OR
	 FIND_IN_SET('도시괴담', wr_tag) <> 0  OR   
	 FIND_IN_SET('소름', wr_tag) <> 0  
	)
ORDER BY RAND()
LIMIT 0, 7 
 
 

그렇기 때문에 태그검색할 때엔 위의 쿼리처럼 응용하면 쉽게 검색할 수 있다.

 

반응형