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 중국어 웹사이트의 기타 관련 기사를 참조하세요!