Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

SQL NOT LIKE 연산자와 함께 사용하는 와일드카드 문자(%, _) 총정리

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 연산자를 유용하게 활용해 보시기 바랍니다.