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

MySQL에서 % 대신 한 글자만 일치시키는 방법 – LIKE 연산자와 언더스코어(_) 활용하기

MySQL에서 특정 문자열을 검색할 때 흔히 와일드카드 %를 사용하지만, 이는 0개 이상의 임의 문자를 모두 일치시킵니다. 만약 정확히 한 글자만 일치시키고 싶다면 언더스코어(_)를 사용해야 합니다.

기본 문법

SELECT * FROM yourTableName WHERE yourColumnName LIKE 'yourString_';

문자열 끝에 붙인 언더스코어(_)가 해당 위치의 단 하나의 문자와 일치합니다. 실제 예제를 통해 살펴보겠습니다.

예제 테이블 생성

먼저 졸업 연도(PassoutYear)를 저장하는 테이블을 생성합니다.

mysql> create table OneCharactermatchDemo
    -> (
    -> Id int NOT NULL AUTO_INCREMENT,
    -> PassoutYear year,
    -> PRIMARY KEY(Id)
    -> );
Query OK, 0 rows affected (0.76 sec)

데이터 삽입

INSERT 명령으로 여러 개의 레코드를 추가합니다.

mysql> insert into OneCharactermatchDemo(PassoutYear) values('2008');
Query OK, 1 row affected (0.14 sec)
mysql> insert into OneCharactermatchDemo(PassoutYear) values('2007');
Query OK, 1 row affected (0.18 sec)
mysql> insert into OneCharactermatchDemo(PassoutYear) values('2010');
Query OK, 1 row affected (0.10 sec)
mysql> insert into OneCharactermatchDemo(PassoutYear) values('2011');
Query OK, 1 row affected (0.13 sec)
mysql> insert into OneCharactermatchDemo(PassoutYear) values('2012');
Query OK, 1 row affected (0.12 sec)
mysql> insert into OneCharactermatchDemo(PassoutYear) values('2006');
Query OK, 1 row affected (0.10 sec)
mysql> insert into OneCharactermatchDemo(PassoutYear) values('2019');
Query OK, 1 row affected (0.14 sec)
mysql> insert into OneCharactermatchDemo(PassoutYear) values('2016');
Query OK, 1 row affected (0.13 sec)
mysql> insert into OneCharactermatchDemo(PassoutYear) values('2017');
Query OK, 1 row affected (0.34 sec)
mysql> insert into OneCharactermatchDemo(PassoutYear) values('2015');
Query OK, 1 row affected (0.17 sec)
mysql> insert into OneCharactermatchDemo(PassoutYear) values('2020');
Query OK, 1 row affected (0.13 sec)

전체 데이터 조회

SELECT 문으로 테이블의 모든 레코드를 확인합니다.

mysql> select *from OneCharactermatchDemo;

실행 결과는 다음과 같습니다.

+----+-------------+
| Id | PassoutYear |
+----+-------------+
|  1 |        2008 |
|  2 |        2007 |
|  3 |        2010 |
|  4 |        2011 |
|  5 |        2012 |
|  6 |        2006 |
|  7 |        2019 |
|  8 |        2016 |
|  9 |        2017 |
| 10 |        2015 |
| 11 |        2020 |
+----+-------------+
11 rows in set (0.00 sec)

언더스코어로 한 글자 일치시키기

이제 '200_' 패턴을 사용하면 앞 세 자리가 '200'이고 네 번째 자리가 어떤 문자든 상관없는 값, 즉 2006년, 2007년, 2008년 데이터만 조회됩니다.

mysql> select *from OneCharactermatchDemo where PassoutYear Like '200_';

실행 결과:

+----+-------------+
| Id | PassoutYear |
+----+-------------+
|  1 |        2008 |
|  2 |        2007 |
|  6 |        2006 |
+----+-------------+
3 rows in set (0.00 sec)

%와 _의 차이 정리

%는 0개 이상의 임의 개수 문자를 일치시키는 반면, _(언더스코어)는 정확히 한 개의 문자만 일치시킵니다. 따라서 자릿수가 고정된 값을 검색할 때는 _를, 가변 길이 패턴을 검색할 때는 %를 사용하는 것이 적절합니다. 두 와일드카드를 조합하여 '_00%'처럼 더 복잡한 패턴 매칭도 가능하다는 점도 기억해 두면 유용합니다.