MySQL에서 % 와일드카드는 문자열 검색 시 매우 유용한 도구입니다. % 와일드카드는 0개, 1개 또는 여러 개의 임의의 문자를 대체할 수 있어서, 부분 일치 검색에 활용됩니다. 이 와일드카드를 사용하려면 LIKE 연산자와 함께 사용해야 합니다.
LIKE 연산자와 % 와일드카드 기본 문법
SELECT * FROM yourTableName WHERE yourColumnName LIKE '조건%';
위 문법에서 조건 뒤에 붙은 %는 해당 조건으로 시작하는 모든 문자열과 일치함을 의미합니다. 그럼 실제 예제를 통해 개념을 자세히 살펴보겠습니다.
예제 테이블 생성하기
먼저 실습용 테이블을 생성하겠습니다. 테이블 생성 쿼리는 다음과 같습니다.
mysql> CREATE TABLE SearchDemo -> ( -> Name VARCHAR(100), -> LoginId VARCHAR(100) -> ); Query OK, 0 rows affected (1.15 sec)
데이터 삽입하기
INSERT 명령문을 사용하여 테이블에 여러 레코드를 삽입합니다.
mysql> INSERT INTO SearchDemo VALUES('John','1_1');
Query OK, 1 row affected (0.19 sec)
mysql> INSERT INTO SearchDemo VALUES('Johnson','1_2');
Query OK, 1 row affected (0.19 sec)
mysql> INSERT INTO SearchDemo VALUES('Carol','2_1');
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO SearchDemo VALUES('Bob','11_1');
Query OK, 1 row affected (0.19 sec)
mysql> INSERT INTO SearchDemo VALUES('Sam','11_2');
Query OK, 1 row affected (0.25 sec)
mysql> INSERT INTO SearchDemo VALUES('Mike','21_1');
Query OK, 1 row affected (0.22 sec)전체 데이터 조회하기
SELECT 문을 사용하여 테이블의 모든 레코드를 확인해 보겠습니다.
mysql> SELECT * FROM SearchDemo;
실행 결과는 다음과 같습니다.
+---------+---------+ | Name | LoginId | +---------+---------+ | John | 1_1 | | Johnson | 1_2 | | Carol | 2_1 | | Bob | 11_1 | | Sam | 11_2 | | Mike | 21_1 | +---------+---------+ 6 rows in set (0.00 sec)
% 와일드카드로 조건 검색하기
% 와일드카드는 0개, 1개 또는 여러 개의 문자를 나타내는 특수 기호입니다. 예를 들어 LoginId가 '2'로 시작하는 모든 레코드를 조회하고 싶다면 다음과 같이 쿼리를 작성할 수 있습니다.
mysql> SELECT * FROM SearchDemo -> WHERE LoginId LIKE '2%';
실행 결과는 다음과 같습니다.
+-------+---------+ | Name | LoginId | +-------+---------+ | Carol | 2_1 | | Mike | 21_1 | +-------+---------+ 2 rows in set (0.00 sec)
결과를 보면 '2_1'과 '21_1'처럼 '2'로 시작하는 LoginId를 가진 두 개의 레코드만 반환된 것을 확인할 수 있습니다. 이처럼 % 와일드카드는 특정 패턴으로 시작하는 데이터를 손쉽게 검색할 때 활용됩니다.
참고: % 와일드카드의 다양한 활용
% 와일드카드는 위치에 따라 다른 의미로 사용할 수 있습니다. '2%'는 '2'로 시작하는 문자열, '%1'은 '1'로 끝나는 문자열, '%2_%'는 중간에 '2_'를 포함하는 문자열과 일치합니다. 또한 '_'(언더스코어) 와일드카드와 함께 사용하면 더욱 정교한 패턴 매칭이 가능합니다.