MySQL에서 LIKE와 NOT LIKE 연산자를 사용하면 특정 패턴과 일치하거나 일치하지 않는 데이터를 손쉽게 조회할 수 있습니다. 이 글에서는 실제 예제를 통해 두 연산자의 사용법과 NULL 값 처리 방법까지 자세히 알아보겠습니다.
1. 샘플 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable
-> (
-> CollegeCode varchar(100)
-> );
Query OK, 0 rows affected (0.53 sec)2. 데이터 삽입하기
INSERT 명령어를 사용해 테이블에 여러 레코드를 추가합니다. 의도적으로 NULL 값도 함께 넣어두겠습니다.
mysql> insert into DemoTable values('Col.1995.01.21');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('Col.2016.11.22');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values(null);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('Col.2018.12.01');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable values('Col.2019.03.12');
Query OK, 1 row affected (0.15 sec)3. 전체 레코드 확인하기
SELECT 문으로 테이블의 모든 데이터를 조회합니다.
mysql> select *from DemoTable;
출력 결과
+----------------+ | CollegeCode | +----------------+ | Col.1995.01.21 | | Col.2016.11.22 | | NULL | | Col.2018.12.01 | | Col.2019.03.12 | +----------------+ 5 rows in set (0.00 sec)
4. LIKE 연산자 활용하기
LIKE 연산자는 와일드카드(%)와 함께 사용하여 특정 문자열을 포함하는 레코드를 찾습니다. 아래 쿼리는 'Col'이라는 문자열을 포함하거나 NULL인 값을 조회합니다.
mysql> select *from DemoTable where CollegeCode LIKE '%Col%' or CollegeCode is NULL;
출력 결과
+----------------+ | CollegeCode | +----------------+ | Col.1995.01.21 | | Col.2016.11.22 | | NULL | | Col.2018.12.01 | | Col.2019.03.12 | +----------------+ 5 rows in set (0.00 sec)
5. NOT LIKE 연산자 활용하기
NOT LIKE는 반대로 특정 패턴을 포함하지 않는 레코드를 반환합니다. 아래 쿼리는 'College'라는 문자열을 포함하지 않거나 NULL인 값을 조회합니다.
mysql> select *from DemoTable where CollegeCode NOT LIKE '%College%' or CollegeCode is NULL;
출력 결과
+----------------+ | CollegeCode | +----------------+ | Col.1995.01.21 | | Col.2016.11.22 | | NULL | | Col.2018.12.01 | | Col.2019.03.12 | +----------------+ 5 rows in set (0.00 sec)
핵심 포인트 정리
LIKE '%Col%'은 'Col'을 포함하는 모든 값을 찾고, NOT LIKE '%College%'는 'College'가 포함되지 않은 값을 찾습니다. 주목할 점은 SQL에서 NULL 값은 비교 연산 시 항상 UNKNOWN으로 평가되기 때문에, LIKE나 NOT LIKE 조건만으로는 NULL 행이 조회되지 않는다는 것입니다. 따라서 NULL 값을 결과에 포함하려면 위 예제처럼 OR 컬럼명 IS NULL 조건을 반드시 함께 사용해야 합니다.