> 데이터 베이스 > MySQL 튜토리얼 > SQL 쿼리에서 LIKE 및 IN 연산자를 효율적으로 결합하려면 어떻게 해야 합니까?

SQL 쿼리에서 LIKE 및 IN 연산자를 효율적으로 결합하려면 어떻게 해야 합니까?

Patricia Arquette
풀어 주다: 2025-01-21 13:27:09
원래의
667명이 탐색했습니다.

How Can I Efficiently Combine LIKE and IN Operators in SQL Queries?

SQL에서 "LIKE"와 "IN" 표현식의 조합

SQL에서 LIKE 연산자는 패턴 기반 문자열 일치를 수행하는 데 사용되는 반면 IN 연산자는 값이 지정된 값 목록의 값과 일치하는지 확인합니다. 그러나 이 두 연산자를 단일 표현식으로 결합하는 직접적인 방법은 없습니다.

일반적인 해결 방법은 LIKE 연산자와 함께 일련의 OR 문을 사용하는 것입니다. 예를 들면 다음과 같습니다.

<code class="language-sql">WHERE something LIKE 'bla%' OR something LIKE '%foo%' OR something LIKE 'batz%'</code>
로그인 후 복사

이 접근 방식은 장황하며 패턴 수가 많으면 다루기 어려울 수 있습니다. 보다 유연하고 읽기 쉬운 솔루션은 하위 쿼리를 사용하는 것입니다.

<code class="language-sql">SELECT * FROM table WHERE something IN (
  SELECT * FROM (VALUES ('bla%'), ('%foo%'), ('batz%')) AS patterns(pattern)
)</code>
로그인 후 복사

그러나 일부 데이터베이스 시스템에는 FTS(전체 텍스트 검색)라는 보다 효율적인 옵션이 있을 수 있습니다. Oracle과 SQL Server 모두 텍스트 데이터 검색을 위한 향상된 기능을 제공하는 FTS 구현을 제공합니다.

LIKE 및 IN과 결합된 FTS 사용

FTS는 보다 복잡한 패턴 일치를 허용하며 CONTAINS라는 특수 연산자를 포함합니다. 이 연산자를 사용하면 여러 패턴을 단일 표현식으로 결합하여 LIKE 및 IN 기능을 효과적으로 결합할 수 있습니다.

Oracle에서 CONTAINS를 사용하는 구문은 다음과 같습니다.

<code class="language-sql">WHERE CONTAINS(column, 'pattern1 OR pattern2 OR ...') > 0</code>
로그인 후 복사

SQL Server에서는 구문이 약간 다릅니다.

<code class="language-sql">WHERE CONTAINS(column, '"pattern1*" OR "pattern2*" OR ...')</code>
로그인 후 복사

FTS를 사용하면 한 번에 여러 패턴을 검색할 수 있는 더욱 깔끔하고 효율적인 쿼리를 생성할 수 있습니다. 이는 특히 검색 조건이 복잡한 대규모 데이터 세트의 경우 성능을 크게 향상시킬 수 있습니다.

위 내용은 SQL 쿼리에서 LIKE 및 IN 연산자를 효율적으로 결합하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿