MySQL에서 LIKE 연산자는 와일드카드(WILDCARD) 문자와 함께 사용되어 특정 패턴을 포함하는 문자열을 검색합니다. 와일드카드란 복잡한 조건에 일치하는 데이터를 손쉽게 찾을 수 있도록 도와주는 특수 문자를 의미합니다. LIKE 연산자와 함께 사용할 수 있는 와일드카드는 크게 두 가지입니다.
% – 퍼센트(Percentage) 와일드카드
'%' 와일드카드는 0개, 1개 또는 그 이상의 임의의 문자에 해당하는 패턴을 지정할 때 사용됩니다. 기본적인 사용 문법은 다음과 같습니다.
Select Statement…Where column_name LIKE 'X%'
여기서 X는 지정된 시작 패턴을 나타내며, %는 0개부터 시작해 임의 개수의 문자와 일치합니다.
% 와일드카드는 지정된 패턴과 다양한 방식으로 조합해 사용할 수 있습니다. 아래 예제에서 X는 사용자가 지정한 패턴을 의미합니다.
1. LIKE 'X%' : "X"로 시작하는 모든 값 찾기
mysql> Select * from Student Where name LIKE 'a%'; +------+-------+---------+---------+ | Id | Name | Address | Subject | +------+-------+---------+---------+ | 2 | Aarav | Mumbai | History | +------+-------+---------+---------+ 1 row in set (0.00 sec)
2. LIKE '%X' : "X"로 끝나는 모든 값 찾기
mysql> Select * from Student Where name LIKE '%v'; +------+--------+---------+-----------+ | Id | Name | Address | Subject | +------+--------+---------+-----------+ | 1 | Gaurav | Delhi | Computers | | 2 | Aarav | Mumbai | History | | 20 | Gaurav | Jaipur | Computers | +------+--------+---------+-----------+ 3 rows in set (0.00 sec)
3. LIKE '%X%' : 문자열 어느 위치든 "X"를 포함하는 모든 값 찾기
mysql> Select * from Student Where name LIKE '%h%'; +------+---------+---------+----------+ | Id | Name | Address | Subject | +------+---------+---------+----------+ | 15 | Harshit | Delhi | Commerce | | 21 | Yashraj | NULL | Math | +------+---------+---------+----------+ 2 rows in set (0.00 sec)
4. LIKE 'X%X' : "X"로 시작하고 "X"로 끝나는 모든 값 찾기
mysql> Select * from Student Where name LIKE 'a%v'; +------+-------+---------+---------+ | Id | Name | Address | Subject | +------+-------+---------+---------+ | 2 | Aarav | Mumbai | History | +------+-------+---------+---------+ 1 row in set (0.00 sec)
_ – 언더스코어(Underscore) 와일드카드
'_' 언더스코어 와일드카드는 정확히 한 개의 문자와 일치시킬 때 사용됩니다. 기본적인 사용 문법은 다음과 같습니다.
Select Statement…Where column_name LIKE 'X_'
여기서 X는 지정된 시작 패턴이며, _는 정확히 하나의 문자와 일치합니다.
언더스코어 '_' 와일드카드는 단독으로 사용하거나 % 와일드카드와 조합하여 다양한 패턴 검색에 활용할 수 있습니다. 아래 예제에서 X는 지정된 패턴을 의미합니다.
1. LIKE 'X_' : "X"로 시작하고 그 뒤에 정확히 한 문자가 있는 값 찾기
mysql> Select * from student WHERE year_of_Admission LIKE '200_'; +------+---------+---------+-----------+--------------------+ | Id | Name | Address | Subject | year_of_Admission | +------+---------+---------+-----------+--------------------+ | 1 | Gaurav | Delhi | Computers | 2001 | | 15 | Harshit | Delhi | Commerce | 2009 | | 21 | Yashraj | NULL | Math | 2000 | +------+---------+---------+-----------+--------------------+ 3 rows in set (0.00 sec)
2. LIKE '_X' : "X"로 끝나고 그 앞에 정확히 한 문자가 있는 값 찾기
mysql> Select * from student WHERE year_of_Admission LIKE '_017'; +------+--------+---------+-----------+--------------------+ | Id | Name | Address | Subject | year_of_Admission | +------+--------+---------+-----------+--------------------+ | 20 | Gaurav | Jaipur | Computers | 2017 | +------+--------+---------+-----------+--------------------+ 1 row in set (0.00 sec)
3. LIKE '_X%' : 두 번째 자리에 "X"가 있는 값 찾기 (% 와일드카드와 조합)
mysql> Select * from student WHERE Name LIKE '_a%'; +------+---------+---------+-----------+--------------------+ | Id | Name | Address | Subject | year_of_Admission | +------+---------+---------+-----------+--------------------+ | 1 | Gaurav | Delhi | Computers | 2001 | | 2 | Aarav | Mumbai | History | 2010 | | 15 | Harshit | Delhi | Commerce | 2009 | | 20 | Gaurav | Jaipur | Computers | 2017 | | 21 | Yashraj | NULL | Math | 2000 | +------+---------+---------+-----------+--------------------+ 5 rows in set (0.00 sec)
4. LIKE 'X_%_%' : "X"로 시작하고 길이가 최소 세 문자 이상인 값 찾기 (% 와일드카드와 조합)
mysql> Select * from student WHERE Name LIKE 'g_%_%'; +------+--------+---------+-----------+--------------------+ | Id | Name | Address | Subject | year_of_Admission | +------+--------+---------+-----------+--------------------+ | 1 | Gaurav | Delhi | Computers | 2001 | | 20 | Gaurav | Jaipur | Computers | 2017 | +------+--------+---------+-----------+--------------------+ 2 rows in set (0.00 sec)