MySQL에서는 LIKE 절을 사용하여 TEXT 타입 컬럼 내에서 특정 문자열을 손쉽게 검색할 수 있습니다. LIKE 절은 와일드카드(%)와 함께 사용되어 부분 문자열 매칭을 지원하므로, 텍스트 데이터를 다룰 때 매우 유용하게 활용됩니다.
기본 문법
LIKE 절을 사용한 문자열 검색의 기본 문법은 다음과 같습니다.
select *from yourTableName where yourColumnName like '%anyStringValue%';
여기서 %는 임의의 문자열을 의미하는 와일드카드입니다. 검색할 문자열 앞뒤에 %를 붙이면 해당 문자열을 포함하는 모든 레코드를 조회할 수 있습니다.
예제 테이블 생성
먼저 예제에 사용할 테이블을 생성해 보겠습니다.
mysql> create table SearchTextDemo
-> (
-> BookName TEXT
-> );
Query OK, 0 rows affected (0.55 sec)
데이터 삽입
이제 생성한 테이블에 문자열 데이터를 삽입합니다.
mysql> insert into SearchTextDemo values('Let us C');
Query OK, 1 row affected (0.28 sec)
mysql> insert into SearchTextDemo values('C in Depth');
Query OK, 1 row affected (0.14 sec)
mysql> insert into SearchTextDemo values('C in Depth with Data Structure');
Query OK, 1 row affected (0.18 sec)
mysql> insert into SearchTextDemo values('Introduction to Java');
Query OK, 1 row affected (0.17 sec)
mysql> insert into SearchTextDemo values('Java in Depth');
Query OK, 1 row affected (0.13 sec)전체 레코드 조회
SELECT 문을 사용하여 저장된 모든 레코드를 확인해 보겠습니다.
mysql> select *from SearchTextDemo;
실행 결과는 다음과 같습니다.
+--------------------------------+
| BookName |
+--------------------------------+
| Let us C |
| C in Depth |
| C in Depth with Data Structure |
| Introduction to Java |
| Java in Depth |
+--------------------------------+
5 rows in set (0.00 sec)
LIKE 절로 특정 문자열 검색하기
이제 LIKE 절을 사용하여 TEXT 컬럼에서 특정 문자열을 검색하는 쿼리를 실행해 보겠습니다.
mysql> select *from SearchTextDemo where BookName like '%in Depth%';
실행 결과는 다음과 같습니다.
+--------------------------------+
| BookName |
+--------------------------------+
| C in Depth |
| C in Depth with Data Structure |
| Java in Depth |
+--------------------------------+
3 rows in set (0.00 sec)
위 출력 결과를 보면, TEXT 타입의 'BookName' 컬럼에서 'in Depth'라는 문자열을 포함하는 레코드 3개가 정상적으로 검색된 것을 확인할 수 있습니다. 이처럼 LIKE 절과 % 와일드카드를 조합하면 TEXT 컬럼 내에서 원하는 문자열을 간편하게 찾을 수 있습니다. 참고로 문자열 앞에만 %를 붙이면 특정 문자열로 끝나는 값, 뒤에만 %를 붙이면 특정 문자열로 시작하는 값도 검색할 수 있습니다.