테이블의 일부 컬럼 값에 특정 키워드가 포함되어 있고, 해당 키워드를 가진 레코드만 조회하고 싶은 경우가 있습니다. 이럴 때 LIKE 연산자를 사용하면 됩니다.
예제 테이블 생성
먼저 예제로 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable750 (Title varchar(200)); Query OK, 0 rows affected (0.69 sec)
데이터 삽입
INSERT 명령을 사용하여 테이블에 몇 개의 레코드를 삽입합니다.
mysql> insert into DemoTable750 values('Java and MongoDB,MySQL');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable750 values('MySQL,SQL Server');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable750 values('PL/SQL,Python,MongoDB');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable750 values('MySQL');
Query OK, 1 row affected (0.33 sec)전체 레코드 확인
SELECT 문을 사용하여 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable750
위 쿼리는 다음과 같은 결과를 출력합니다.
+------------------------+ | Title | +------------------------+ | Java and MongoDB,MySQL | | MySQL,SQL Server | | PL/SQL,Python,MongoDB | | MySQL | +------------------------+ 4 rows in set (0.00 sec)
키워드 기반으로 레코드 선택하기
이제 키워드를 기준으로 레코드를 선택하는 쿼리를 살펴보겠습니다. 예를 들어 키워드가 "MySQL"이라고 가정하면, LIKE 연산자와 와일드카드(%)를 함께 사용하여 문자열 어느 위치에든 "MySQL"이 포함된 모든 레코드를 조회할 수 있습니다.
mysql> select *from DemoTable750 where Title LIKE '%MySQL%';
위 쿼리는 다음과 같은 결과를 출력합니다.
+------------------------+ | Title | +------------------------+ | Java and MongoDB,MySQL | | MySQL,SQL Server | | MySQL | +------------------------+ 3 rows in set (0.00 sec)
결과를 보면 "MySQL"이라는 키워드가 포함된 3개의 레코드만 반환된 것을 확인할 수 있습니다. 참고로 %MySQL%처럼 양쪽에 와일드카드를 붙이면 문자열 중간에 키워드가 있어도 검색되며, MySQL%는 키워드로 시작하는 값, %MySQL은 키워드로 끝나는 값만 조회하게 됩니다.