>데이터 베이스 >MySQL 튜토리얼 >MySQL을 사용하여 쉼표로 구분된 문자열에서 특정 값을 효율적으로 찾는 방법은 무엇입니까?

MySQL을 사용하여 쉼표로 구분된 문자열에서 특정 값을 효율적으로 찾는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-22 21:21:111006검색

How to Efficiently Find Specific Values in Comma-Separated Strings Using MySQL?

MySQL 쿼리: 쉼표로 구분된 문자열의 값을 정확하게 타겟팅

많은 데이터베이스는 쉼표로 구분된 값(CSV)이 포함된 필드를 활용합니다. 이는 이러한 문자열 내에서 특정 값을 쿼리할 때 종종 문제를 야기합니다. COLORS 테이블의 SHIRTS 열을 생각해 보세요. LIKE과 같은 간단한 SELECT * FROM SHIRTS WHERE COLORS LIKE '%1%' 쿼리는 부정확한 결과를 낳을 수 있으며 '1'이 더 큰 값(예: '12' 또는 '15')의 일부인 항목을 반환할 수 있습니다.

색상이 '1'인 셔츠만 정확하게 검색하려면 부분 일치를 피하세요. 두 가지 효과적인 전략은 다음과 같습니다.

방법 1: 정확한 일치를 위해 쉼표 추가

이 접근 방식에서는 비교하기 전에 CSV 문자열 옆에 쉼표를 사용하는 방법이 포함됩니다. 이렇게 하면 완전한 값만 일치됩니다.

<code class="language-sql">SELECT * FROM SHIRTS WHERE CONCAT(',', COLORS, ',') LIKE '%,1,%'</code>

선행 및 후행 쉼표를 추가하면 문자열 내에 ',1,'이 존재하는 항목만 선택됩니다.

방법 2: FIND_IN_SET 활용

FIND_IN_SET 기능은 보다 직접적인 솔루션을 제공합니다. 쉼표로 구분된 문자열 내에서 하위 문자열의 위치를 ​​식별하고, 발견되면 0이 아닌 값을 반환합니다.

<code class="language-sql">SELECT * FROM SHIRTS WHERE FIND_IN_SET('1', COLORS) > 0</code>

이 방법은 숫자 식별자나 색상 코드를 처리할 때 특히 유용합니다. COLORS 문자열

내에 고유한 값으로 '1'이 있는지 직접 확인합니다.

위 내용은 MySQL을 사용하여 쉼표로 구분된 문자열에서 특정 값을 효율적으로 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.