>데이터 베이스 >MySQL 튜토리얼 >쉼표로 구분된 MySQL 문자열에서 정확히 일치하는 항목을 쿼리하는 방법은 무엇입니까?

쉼표로 구분된 MySQL 문자열에서 정확히 일치하는 항목을 쿼리하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-22 21:37:14630검색

How to Query for Exact Matches in Comma-Separated MySQL Strings?

MySQL에서 쉼표로 구분된 문자열이 정확히 일치하는지 쿼리

쉼표로 구분된 문자열이 포함된 MySQL 필드로 작업할 때 특정 값을 쿼리하면 종종 문제가 발생합니다. 예를 들어 문자열에 특정 값이 포함된 모든 레코드를 쿼리할 때 대상 번호에 대한 다른 값이 포함된 레코드를 실수로 검색할 수 있습니다.

다음 쿼리를 고려해 보세요.

<code class="language-sql">select * from shirts where colors like '%1%'</code>

이 쿼리는 빨간색(color=1)이 포함된 모든 셔츠를 검색하도록 설계되었습니다. 그러나 회색(=12) 및 주황색(=15) 색상의 셔츠도 검색합니다. 이 색상에는 숫자 1이 포함되어 있기 때문입니다.

이 문제를 해결하려면 검색 중인 정확한 색상 값만 선택하도록 쿼리를 개선할 수 있습니다. 다음은 일반적으로 사용되는 두 가지 방법입니다.

1. 쉼표를 연결하세요

이 방법은 목표값의 왼쪽과 오른쪽에 쉼표를 추가하는 방법입니다. 이렇게 하면 검색 문자열이 원하는 값과 정확히 동일한 값만 일치하게 됩니다.

<code class="language-sql">select * from shirts where CONCAT(',', colors, ',') like '%,1,%'</code>

2. find_in_set 사용

find_in_set 기능을 사용하여 원하는 결과를 얻을 수도 있습니다. 이 함수는 두 개의 매개변수를 사용합니다:

  • 찾고 있는 목표값
  • 검색하려는 쉼표로 구분된 문자열

find_in_set이 0보다 큰 값을 반환하면 대상 값이 문자열에 존재한다는 의미입니다. 샘플 쿼리는 다음과 같습니다.

<code class="language-sql">select * from shirts where find_in_set('1', colors) > 0</code>

이 두 가지 방법 중 하나를 사용하면 원치 않는 일치 항목을 선택하지 않고 MySQL 쿼리가 관심 있는 정확한 색상 값에 대한 레코드를 정확하게 검색하도록 할 수 있습니다.

위 내용은 쉼표로 구분된 MySQL 문자열에서 정확히 일치하는 항목을 쿼리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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