SQL에서 NOT LIKE 연산자는 와일드카드(WILDCARD) 문자와 함께 사용되어, 특정 패턴을 포함하지 않는 문자열을 조회할 때 활용됩니다. 와일드카드란 복잡한 조건에 맞는 데이터를 검색할 수 있도록 도와주는 특수 문자를 말합니다.
NOT LIKE 연산자에 사용 가능한 와일드카드 종류
NOT LIKE 연산자와 함께 사용할 수 있는 대표적인 와일드카드 문자는 다음 두 가지입니다.
- % (퍼센트) — 0개, 1개 또는 그 이상의 임의의 문자와 일치
- _ (언더스코어) — 정확히 한 개의 문자와 일치
1. 퍼센트(%) 와일드카드
'%' 와일드카드는 0개 이상의 임의의 문자열을 나타내는 패턴을 지정할 때 사용합니다. NOT LIKE 연산자와 '%'를 조합한 기본 문법은 다음과 같습니다.
Select 문...
WHERE column_name NOT LIKE 'X%'
여기서 X는 지정된 시작 패턴이며, '%'는 그 뒤에 오는 0개 이상의 모든 문자와 매칭됩니다. 아래 예제들에서 X는 사용자가 지정한 패턴을 의미합니다.
1) NOT LIKE 'X%'
"X"로 시작하는 값을 제외한 모든 값을 찾습니다.
예제:
mysql> Select * from Student Where Name NOT LIKE 'a%'; +------+---------+---------+-----------+--------------------+ | Id | Name | Address | Subject | year_of_Admission | +------+---------+---------+-----------+--------------------+ | 1 | Gaurav | Delhi | Computers | 2001 | | 15 | Harshit | Delhi | Commerce | 2009 | | 20 | Gaurav | Jaipur | Computers | 2017 | | 21 | Yashraj | NULL | Math | 2000 | +------+---------+---------+-----------+--------------------+ 4 rows in set (0.00 sec)
2) NOT LIKE '%X'
"X"로 끝나는 값을 제외한 모든 값을 찾습니다.
예제:
mysql> Select * from Student Where Name NOT LIKE '%v'; +------+---------+---------+----------+--------------------+ | Id | Name | Address | Subject | year_of_Admission | +------+---------+---------+----------+--------------------+ | 15 | Harshit | Delhi | Commerce | 2009 | | 21 | Yashraj | NULL | Math | 2000 | +------+---------+---------+----------+--------------------+ 2 rows in set (0.00 sec)
3) NOT LIKE '%X%'
임의의 위치에 "X"를 포함하는 값을 제외한 모든 값을 찾습니다.
예제:
mysql> Select * from Student Where Name NOT LIKE '%h%'; +------+--------+---------+-----------+--------------------+ | Id | Name | Address | Subject | year_of_Admission | +------+--------+---------+-----------+--------------------+ | 1 | Gaurav | Delhi | Computers | 2001 | | 2 | Aarav | Mumbai | History | 2010 | | 20 | Gaurav | Jaipur | Computers | 2017 | +------+--------+---------+-----------+--------------------+ 3 rows in set (0.00 sec)
4) NOT LIKE 'X%X'
"X"로 시작하고 "X"로 끝나는 값을 제외한 모든 값을 찾습니다.
예제:
mysql> Select * from Student Where Name NOT LIKE 'a%v'; +------+---------+---------+-----------+--------------------+ | Id | Name | Address | Subject | year_of_Admission | +------+---------+---------+-----------+--------------------+ | 1 | Gaurav | Delhi | Computers | 2001 | | 15 | Harshit | Delhi | Commerce | 2009 | | 20 | Gaurav | Jaipur | Computers | 2017 | | 21 | Yashraj | NULL | Math | 2000 | +------+---------+---------+-----------+--------------------+ 4 rows in set (0.00 sec)
2. 언더스코어(_) 와일드카드
'_' 언더스코어 와일드카드는 정확히 한 개의 문자와 매칭될 때 사용합니다. NOT LIKE 연산자와 '_'를 조합한 기본 문법은 다음과 같습니다.
Select 문...
WHERE column_name NOT LIKE 'X_'
여기서 X는 지정된 시작 패턴이며, '_'는 정확히 한 개의 문자와 일치합니다. 언더스코어 와일드카드는 단독으로 사용하거나 '%'와 조합하여 다양하게 활용할 수 있습니다.
1) NOT LIKE 'X_'
"X"로 시작하고 그 뒤에 정확히 한 개의 문자가 오는 값을 제외한 모든 값을 찾습니다.
예제:
mysql> Select * from Student Where Year_of_Admission NOT LIKE '200_'; +------+--------+---------+-----------+--------------------+ | Id | Name | Address | Subject | year_of_admission | +------+--------+---------+-----------+--------------------+ | 2 | Aarav | Mumbai | History | 2010 | | 20 | Gaurav | Jaipur | Computers | 2017 | +------+--------+---------+-----------+--------------------+ 2 rows in set (0.00 sec)
2) NOT LIKE '_X'
"X"로 끝나고 그 앞에 정확히 한 개의 문자가 오는 값을 제외한 모든 값을 찾습니다.
예제:
mysql> Select * from Student Where Year_of_Admission NOT LIKE '_017'; +------+---------+---------+-----------+--------------------+ | Id | Name | Address | Subject | year_of_admission | +------+---------+---------+-----------+--------------------+ | 1 | Gaurav | Delhi | Computers | 2001 | | 2 | Aarav | Mumbai | History | 2010 | | 15 | Harshit | Delhi | Commerce | 2009 | | 21 | Yashraj | NULL | Math | 2000 | +------+---------+---------+-----------+--------------------+ 4 rows in set (0.00 sec)
3) NOT LIKE '_X%'
'%' 와일드카드와 조합된 형태로, 두 번째 위치에 "X"가 오는 값을 제외한 모든 값을 찾습니다.
예제:
mysql> Select * from Student Where Name NOT LIKE '_a%'; Empty set (0.00 sec)
4) NOT LIKE 'X_%_%'
'%' 와일드카드와 조합된 형태로, "X"로 시작하면서 길이가 최소 세 자 이상인 값을 제외한 모든 값을 찾습니다.
예제:
mysql> Select * from Student Where Name NOT LIKE 'g_%_%'; +------+---------+---------+----------+--------------------+ | Id | Name | Address | Subject | year_of_Admission | +------+---------+---------+----------+--------------------+ | 2 | Aarav | Mumbai | History | 2010 | | 15 | Harshit | Delhi | Commerce | 2009 | | 21 | Yashraj | NULL | Math | 2000 | +------+---------+---------+----------+--------------------+ 3 rows in set (0.00 sec)
마무리
지금까지 SQL의 NOT LIKE 연산자와 함께 사용할 수 있는 두 가지 와일드카드인 '%'(퍼센트)와 '_'(언더스코어)의 사용법을 살펴보았습니다. '%'는 0개 이상의 문자를, '_'는 정확히 한 개의 문자를 매칭하며, 이 둘을 적절히 조합하면 복잡한 조건의 데이터 검색도 손쉽게 처리할 수 있습니다. 실무에서 원치 않는 패턴의 데이터를 필터링할 때 NOT LIKE 연산자를 유용하게 활용해 보시기 바랍니다.