MySQL에서 문자열이 포함된 행 조회하기
MySQL에서 특정 문자열을 포함하는 행을 조회하려면 LIKE 연산자와 와일드카드(%)를 함께 사용하면 됩니다. 기본 문법은 다음과 같습니다.
SELECT * FROM yourTableName WHERE yourColumnName LIKE '%yourPattern%';
여기서 '%yourPattern%'의 퍼센트(%) 기호는 임의의 문자열을 의미하는 와일드카드입니다. 패턴 앞뒤에 %를 붙이면 해당 문자열이 컬럼 값의 어느 위치에 있든 검색됩니다.
1. 예제 테이블 생성
문법을 이해하기 위해 먼저 테이블을 생성해 보겠습니다.
mysql> create table PatternDemo
-> (
-> Id int,
-> Name varchar(100),
-> Age int
-> );
Query OK, 0 rows affected (0.97 sec)
2. 데이터 삽입
INSERT 명령어를 사용하여 테이블에 레코드를 추가합니다.
mysql> insert into PatternDemo values(1,'James',23);
Query OK, 1 row affected (0.11 sec)
mysql> insert into PatternDemo values(2,'Joseph',21);
Query OK, 1 row affected (0.18 sec)
mysql> insert into PatternDemo values(3,'Robert',20);
Query OK, 1 row affected (0.11 sec)
mysql> insert into PatternDemo values(4,'John',26);
Query OK, 1 row affected (0.10 sec)
mysql> insert into PatternDemo values(5,'Richard',24);
Query OK, 1 row affected (0.17 sec)
3. 전체 레코드 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from PatternDemo;
실행 결과는 다음과 같습니다.
+------+---------+------+
| Id | Name | Age |
+------+---------+------+
| 1 | James | 23 |
| 2 | Joseph | 21 |
| 3 | Robert | 20 |
| 4 | John | 26 |
| 5 | Richard | 24 |
+------+---------+------+
5 rows in set (0.00 sec)
4. LIKE 연산자로 특정 문자열 포함 행 검색
이제 이름(Name) 컬럼에 "Jo"라는 문자가 포함된 모든 행을 조회하는 쿼리를 실행해 보겠습니다.
mysql> select *from PatternDemo where Name like '%Jo%';
실행 결과는 다음과 같습니다.
+------+--------+------+
| Id | Name | Age |
+------+--------+------+
| 2 | Joseph | 21 |
| 4 | John | 26 |
+------+--------+------+
2 rows in set (0.00 sec)
결과를 보면 이름에 "Jo"가 포함된 'Joseph'과 'John' 두 개의 행만 반환된 것을 확인할 수 있습니다.
LIKE 패턴 조합 정리
와일드카드 위치에 따라 검색 결과가 달라지므로 상황에 맞게 활용하면 유용합니다.
- '%Jo%': "Jo"가 어디든 포함된 값 검색 (예: Joseph, John)
- 'Jo%': "Jo"로 시작하는 값 검색
- '%Jo': "Jo"로 끝나는 값 검색
이처럼 LIKE 연산자는 부분 일치 검색에 매우 유용하지만, 인덱스를 제대로 활용하지 못할 수 있으므로 대용량 테이블에서는 성능에 유의해야 합니다.