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

MySQL TEXT 컬럼에서 문자열 검색하는 방법 (LIKE 절 활용)

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 컬럼 내에서 원하는 문자열을 간편하게 찾을 수 있습니다. 참고로 문자열 앞에만 %를 붙이면 특정 문자열로 끝나는 값, 뒤에만 %를 붙이면 특정 문자열로 시작하는 값도 검색할 수 있습니다.