find_in_set은 mysql에서 콤마로 구분된 문자열 목록에서 문자열의 위치를 찾는 문자열 함수이다.찾은 문자열의 위치 (1부터 개수)를 나타내는 정수를 되돌려주고 문자열이 목록에 없을 경우 0을 되돌려준다.이 함수는 콤마로 구분된 문자열로 저장된 필드를 다룰 때 자주 사용되지만, 이러한 설계는 일반적으로 권장되지 않는다 (다쌍 다쌍 테이블 만들기와 같은 관계형 데이터베이스의 장점을 이용하는 것이 좋다).
문법
find_in_set (str strlist)
str:찾을 문자열입니다.
strlist:콤마로 구분된 여러 문자열의 목록을 포함한다.
예제
취미를 쉼표로 구분한 사용자들의 취미들의 열을 포함하는 user 라는 테이블이 있다고 하자.
select * from users where find_in_set ('eat', hobbies) > 0;
주의 사항
성능:find_in_set을 사용하면 콤마로 구분된 문자열을 줄 별로 스캔하고 분석해야 하기 때문에 큰 데이터셋에서 성능 문제를 일으킬 수 있다.
인덱스:find_in_set이 인덱스에 사용될 수 없습니다. 이는 쿼리가 데이터 검색을 가속화하기 위해 인덱스를 사용할 수 없음을 의미합니다.
데이터 정규화:예를 들어, user_id와 hobby 필드를 포함하는 새로운 user_hobbies 테이블을 만들어 각 사용자의 취미별로 행을 할당함으로써이 다중값 필드를 정규화하는 것이 더 좋다.이것은 표준 sql 연결 연산을 사용할 수 있으며 인덱스를 사용하여 질의 성능을 향상시킬 수 있다.
find_in_set이 유용한 경우도 있지만, 일반적으로 데이터베이스를 설계할 때 여러 값을 저장하기 위해 콤마로 구분된 문자열을 사용하는 것보다 더 표준적인 방법을 사용하는 것이 좋다.
© CopyRight 2018-2025, Tool.hadsky.com