Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 단일 쿼리로 여러 단어 검색하기 – WHERE 절과 LIKE 조건 활용법

MySQL에서 여러 단어를 한 번에 검색하는 방법

MySQL에서 하나의 열(컬럼) 값 안에 여러 단어가 포함되어 있는지 확인하려면 WHERE 절에 여러 개의 LIKE 조건을 OR 연산자로 연결하면 됩니다. 이 글에서는 테이블 생성부터 쿼리 실행까지, 단일 쿼리로 여러 키워드를 검색하는 과정을 단계별로 살펴보겠습니다.

1단계: 테이블 생성

먼저 문장을 저장할 테이블을 생성합니다.

mysql> create table DemoTable1536
    -> (
    -> Sentence text
    -> );
Query OK, 0 rows affected (0.51 sec)

2단계: 샘플 데이터 삽입

INSERT 명령을 사용해 테이블에 레코드를 추가합니다.

mysql> insert into DemoTable1536 values('I like MySQL database.');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1536 values('Java is an Object Oriented Programming Language');
Query OK, 1 row affected (0.30 sec)
mysql> insert into DemoTable1536 values('I only like data structure');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable1536 values('MongoDB is NoSQL database');
Query OK, 1 row affected (0.46 sec)

3단계: 전체 레코드 조회

SELECT 문으로 테이블에 저장된 모든 데이터를 확인합니다.

mysql> select * from DemoTable1536;

실행 결과는 다음과 같습니다.

+--------------------------------------------------+
| Sentence                                         |
+--------------------------------------------------+
| I like MySQL database.                           |
| Java is an Object Oriented Programming Language  |
| I only like data structure                       |
| MongoDB is NoSQL database                        |
+--------------------------------------------------+
4 rows in set (0.00 sec)

4단계: 여러 단어 검색 쿼리 실행

아래 쿼리는 'like', 'database', 'data' 세 단어 중 하나라도 포함된 행을 검색합니다.

mysql> select * from DemoTable1536
    -> where (Sentence like '%like%') or (Sentence like '%database%') or (Sentence like '%data%');

실행 결과는 다음과 같습니다.

+----------------------------+
| Sentence                   |
+----------------------------+
| I like MySQL database.     |
| I only like data structure |
| MongoDB is NoSQL database  |
+----------------------------+
3 rows in set (0.00 sec)

핵심 정리

WHERE 절에서 여러 LIKE 조건을 OR로 연결하면 하나의 쿼리만으로 여러 단어를 동시에 검색할 수 있습니다. 위 예제에서 'Java is an Object Oriented Programming Language' 행은 세 키워드 어느 것도 포함하지 않기 때문에 결과에서 제외된 점에 주목하세요. 반대로 모든 단어를 반드시 포함해야 하는 경우에는 OR 대신 AND 연산자를 사용하면 됩니다. 또한 대소문자 구분 없이 검색하려면 LOWER() 함수나 BINARY 비교 방식을 상황에 맞게 활용하는 것도 좋은 방법입니다.