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

MySQL에서 열 값이 두 문자열 중 하나와 일치하는 행 조회하는 방법

MySQL에서 특정 열의 값이 두 개의 문자열 중 하나라도 포함하는 행을 조회하려면 LIKE 연산자OR 조건을 함께 사용하면 됩니다. 이 글에서는 실제 예제를 통해 그 과정을 단계별로 살펴보겠습니다.

1. 예제 테이블 생성

먼저 예제로 사용할 테이블을 생성합니다.

mysql> create table DemoTable762 (Title text);
Query OK, 0 rows affected (0.54 sec)

2. 데이터 삽입

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

mysql> insert into DemoTable762 values('Introduction to Java');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable762 values('MySQL is a RDBMS');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable762 values('Data Structure and Algorithm in Java');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable762 values('Data Structure and Algorithm in C and C++');
Query OK, 1 row affected (0.18 sec)

3. 전체 레코드 조회

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

mysql> select *from DemoTable762;

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

+-------------------------------------------+
| Title                                     |
+-------------------------------------------+
| Introduction to Java                      |
| MySQL is a RDBMS                          |
| Data Structure and Algorithm in Java      |
| Data Structure and Algorithm in C and C++ |
+-------------------------------------------+
4 rows in set (0.00 sec)

4. 두 문자열 중 하나와 일치하는 행 조회하기

다음은 Title 열에 "MySQL" 또는 "Algorithm"이라는 문자열이 포함된 행을 조회하는 쿼리입니다. 각각의 LIKE 조건을 OR로 연결하면 두 조건 중 하나만 만족해도 해당 행이 결과에 포함됩니다.

mysql> select *from DemoTable762 where Title LIKE '%MySQL%' or Title LIKE '%Algorithm%';

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

+-------------------------------------------+
| Title                                     |
+-------------------------------------------+
| MySQL is a RDBMS                          |
| Data Structure and Algorithm in Java      |
| Data Structure and Algorithm in C and C++ |
+-------------------------------------------+
3 rows in set (0.00 sec)

참고: REGEXP를 활용한 대안

LIKE '%문자열%' 패턴은 해당 문자열이 열 값의 어느 위치에든 포함되어 있는지 확인합니다. 만약 일치시켜야 할 문자열이 세 개 이상으로 늘어난다면, 매번 OR 조건을 반복해서 작성하는 대신 REGEXP 연산자를 사용하는 것이 더 간결하고 가독성이 좋습니다.

mysql> select *from DemoTable762 where Title REGEXP 'MySQL|Algorithm';

위 쿼리는 앞서 살펴본 OR 조건 쿼리와 동일한 결과를 반환하지만, 검색어가 많아질수록 코드 관리가 훨씬 수월해집니다. 상황에 맞게 두 방식을 선택하여 사용하시면 됩니다.