MySQL에서 LIKE 절과 와일드카드(%)를 활용하면 특정 문자열로 시작하는 여러 값을 손쉽게 조회할 수 있습니다. 이번 글에서는 'Joh'로 시작하는 이름들을 가져오는 방법을 단계별 예제와 함께 살펴보겠습니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable
(
Name varchar(40)
);
Query OK, 0 rows affected (0.55 sec)2. 샘플 데이터 삽입하기
INSERT 명령을 사용해 테이블에 여러 개의 레코드를 추가합니다.
mysql> insert into DemoTable values('John');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('Sam');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('Mike');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('Ethan');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('Johnson');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('Bob');
Query OK, 1 row affected (0.12 sec)3. 전체 데이터 확인하기
SELECT 문을 실행해 테이블에 저장된 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+---------+ | Name | +---------+ | John | | Sam | | Mike | | Ethan | | Johnson | | Bob | +---------+ 6 rows in set (0.00 sec)
4. 'Joh'로 시작하는 여러 값 조회하기
다음은 UNION과 LIKE 연산자를 조합하여 'Joh'로 시작하는 여러 값을 한 번에 가져오는 쿼리입니다. 두 개의 SELECT 문 결과를 하나로 합친 뒤, WHERE 절에서 LIKE 'Joh%' 조건을 적용하는 방식입니다.
mysql> select *from(
select Name as myValue from DemoTable union
select Name from DemoTable
)tbl
where myValue like 'Joh%';실행 결과는 다음과 같습니다.
+---------+ | myValue | +---------+ | John | | Johnson | +---------+ 2 rows in set (0.00 sec)
핵심 정리
%와일드카드는 임의의 문자열(0개 이상)을 의미하므로'Joh%'는 'John', 'Johnson'처럼 'Joh'로 시작하는 모든 값과 일치합니다.- UNION은 여러 SELECT 문의 결과를 하나의 집합으로 결합할 때 사용되며, 이후 WHERE 절에서 필터링할 수 있습니다.
- 단순히 한 테이블에서 조건에 맞는 값만 찾는다면
SELECT * FROM DemoTable WHERE Name LIKE 'Joh%';처럼 더 간결하게 작성할 수도 있습니다.