MySQL - LIKE로 패턴 매칭하기

Posted by Juri on October 7, 2021

열 값이 부분적으로 일치하는 데이터를 찾을 때 ‘LIKE’를 사용한다. 패턴을 정의할 때는 ‘%’와 ‘_‘을 사용한다.

  • ’%’은 임의의 문자열을 의미하는 메타문자이다.
  • ‘_‘은 임의의 문자 하나를 의미하는 메타문자이다.

컬럼명 LIKE ‘패턴’

1. 전방일치

1
SELECT * FROM test_table WHERE text LIKE 'IT%';

문자열 ‘IT’로 시작하는 text 열 값이 검색된다.

2. 중간일치

1
SELECT * FROM test_table WHERE text LIKE '%IT%';

문자열 ‘IT’를 포함하는 text 열 값이 검색된다. 메타문자 ‘%’는 빈 문자열과 매치될 수 있어 문자열 ‘IT’로 시작하는 text 열 값도 검색할 수 있다.

3. 후방일치

1
SELECT * FROM test_table WHERE text LIKE '%IT';

전방일치와 동일하다.

그렇다면 메타문자 ‘%’ 혹은 ‘_‘을 포함하는 문자열을 찾을 땐 어떻게 하면 될까?


’/’로 이스케이프

1
SELECT * FROM test_table WHERE text LIKE '%/%%';

맨 앞과 맨 뒤의 ‘%’는 메타문자 ‘%’이고, ‘/’뒤의 ‘%’는 검색하고자 하는 일반문자인 ‘%’이다. ‘‘를 포함하는 문자열을 찾을 땐 ‘%’와 동일하게 ‘//‘을 사용한다.

‘의 이스케이프

표준 SQL에서는 ‘를 2개 연속해서 쓰는 것으로 이스케이프 처리를 할 수 있다.

1
She's a baby -> 'She''s a baby'