집 >데이터 베이스 >MySQL 튜토리얼 >MySQL 쿼리 내에서 쉼표로 구분된 문자열의 특정 값을 효율적으로 찾는 방법은 무엇입니까?
MySQL 쿼리 및 쉼표로 구분된 문자열 값: 집중적 접근 방식
MySQL 데이터베이스 내에서 쉼표로 구분된 문자열로 저장된 데이터를 관리하면 특정 값을 검색할 때 문제가 발생하는 경우가 많습니다. "1,2,5,12,15"와 같이 쉼표로 구분된 숫자가 포함된 COLORS
테이블의 SHIRTS
필드를 상상해 보세요. 여기서 각 숫자는 색상을 나타냅니다.
간단한 LIKE 쿼리의 문제점
SELECT * FROM SHIRTS WHERE COLORS LIKE '%1%'
와 같은 쿼리는 색상 1(빨간색)의 셔츠를 찾는 것을 목표로 하지만 부분적인 문자열 일치로 인해 12(회색) 및 15(주황색)와 같은 색상의 셔츠도 잘못 반환됩니다.
정확한 값 검색 기법
색상 1의 셔츠만 분리하려면 더 정확한 방법이 필요합니다.
방법 1: 정확한 일치를 위해 CONCAT 활용
CONCAT
기능을 사용하여 전략적으로 쉼표를 추가하면 정확한 일치를 보장할 수 있습니다.
<code class="language-sql">SELECT * FROM SHIRTS WHERE CONCAT(',', COLORS, ',') LIKE '%,1,%'</code>
이렇게 하면 COLORS
문자열의 시작과 끝에 쉼표가 추가되어 ",1,"을 정확하게 검색할 수 있습니다.
방법 2: find_in_set 함수 활용
또는 find_in_set
기능이 보다 직접적인 솔루션을 제공합니다.
<code class="language-sql">SELECT * FROM SHIRTS WHERE FIND_IN_SET('1', COLORS) > 0</code>
FIND_IN_SET
은 쉼표로 구분된 문자열(COLORS
) 내에 검색 문자열(이 경우 '1')이 있는 경우 0보다 큰 값을 반환합니다.
이러한 방법은 부정확한 LIKE
문의 함정을 피하면서 MySQL 쿼리 내의 쉼표로 구분된 문자열에서 특정 값을 정확하게 추출하는 효율적인 방법을 제공합니다. 이러한 솔루션이 작동하는 동안 쉼표로 구분된 값을 피하기 위해 데이터베이스를 정규화하는 것이 일반적으로 데이터 무결성 및 쿼리 성능을 위한 가장 장기적인 솔루션이라는 점을 기억하세요.
위 내용은 MySQL 쿼리 내에서 쉼표로 구분된 문자열의 특정 값을 효율적으로 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!