MySQL NOT LIKE 연산자란?
MySQL에서는 NOT LIKE 연산자와 와일드카드 문자를 함께 사용하여, 지정한 패턴의 문자열이 다른 문자열 내에 존재하지 않는지 손쉽게 확인할 수 있습니다. 일반적인 LIKE 연산자가 특정 패턴을 가진 데이터를 찾는 데 사용된다면, NOT LIKE는 그 반대로 해당 패턴이 포함되지 않은 데이터만 필터링합니다.
기본 문법
NOT LIKE specific_pattern
여기서 specific_pattern은 다른 문자열 안에서 찾고 싶지 않은 문자열의 패턴을 의미합니다.
사용 예시
예를 들어 'student'라는 테이블에 학생들의 정보가 저장되어 있고, 이름에 'av'라는 문자열 패턴이 포함되지 않은 학생들의 상세 정보를 조회하고 싶다고 가정해 보겠습니다. 이 경우 다음과 같은 MySQL 쿼리를 사용하면 됩니다.
mysql> Select * from Student WHERE name NOT LIKE '%av%'; +------+---------+---------+----------+--------------------+ | Id | Name | Address | Subject | year_of_Admission | +------+---------+---------+----------+--------------------+ | 15 | Harshit | Delhi | Commerce | 2009 | | 21 | Yashraj | NULL | Math | 2000 | +------+---------+---------+----------+--------------------+ 2 rows in set (0.00 sec)
와일드카드 '%'의 역할
위 예제에서 '%' 기호는 NOT LIKE 연산자와 함께 사용되는 와일드카드(wildcard)입니다. '%'는 0개 이상의 임의의 문자를 대체할 수 있으므로, '%av%'는 이름의 어느 위치에든 'av'가 포함된 모든 경우를 의미합니다. 따라서 NOT LIKE 조건에 따라 이러한 패턴이 전혀 포함되지 않은 행(Harshit, Yashraj)만 결과로 반환됩니다.
참고 사항
NOT LIKE 연산자는 대소문자 구분 설정(collation)에 따라 동작이 달라질 수 있으며, NULL 값이 있는 컬럼에는 조건이 적용되지 않아 결과에서 제외될 수 있다는 점도 유의해야 합니다. 정확한 대소문자 구분 조회가 필요하다면 BINARY 키워드를 함께 사용하는 방법도 고려해 볼 수 있습니다.