HIT해

[SQL] LIKE 본문

자격증 공부/SQLD

[SQL] LIKE

힛해 2024. 11. 2. 06:04
728x90

LIKE

LIKE는 문자열 패턴 매칭을 위한 SQL 연산자입니다. REGEXP보다 단순하지만 더 빠른 성능을 보입니다.

1. LIKE 기본 와일드카드

% : 0개 이상의 임의의 문자
_ : 정확히 1개의 임의의 문자

2. 기본 사용법과 예시

-- 특정 문자로 시작하는 경우
WHERE column LIKE 'A%'-- A로 시작하는 모든 값
WHERE column LIKE 'ABC%'-- ABC로 시작하는 모든 값-- 특정 문자로 끝나는 경우
WHERE column LIKE '%Z'-- Z로 끝나는 모든 값
WHERE column LIKE '%XYZ'-- XYZ로 끝나는 모든 값-- 특정 문자를 포함하는 경우
WHERE column LIKE '%test%'-- test를 포함하는 모든 값-- 특정 길이의 문자열
WHERE column LIKE '___'-- 정확히 3글자인 값
WHERE column LIKE '___%'-- 3글자 이상인 값-- 여러 조건 조합
WHERE column LIKE 'A%Z'-- A로 시작하고 Z로 끝나는 값

3. 실제 활용 예시

이메일 검색

-- gmail 계정 검색
WHERE email LIKE '%@gmail.com'

-- 특정 도메인의 이메일 검색
WHERE email LIKE '%@%.com'

-- 이메일 아이디가 5글자인 경우
WHERE email LIKE '_____@%'

전화번호 검색

-- 특정 지역번호로 시작하는 번호
WHERE phone LIKE '02-%'
WHERE phone LIKE '010-%'

-- 특정 형식의 전화번호
WHERE phone LIKE '___-____-____'

파일명 검색

-- 특정 확장자 파일 검색
WHERE filename LIKE '%.pdf'
WHERE filename LIKE '%.jpg'

-- 특정 접두사를 가진 파일
WHERE filename LIKE 'report_%'

이름 검색

-- 특정 성씨 검색
WHERE name LIKE '김%'

-- 두 글자 이름 검색
WHERE name LIKE '__'

-- 특정 문자를 포함하는 이름
WHERE name LIKE '%민%'

4. NOT LIKE 사용

-- gmail이 아닌 이메일
WHERE email NOT LIKE '%@gmail.com'

-- 특정 문자로 시작하지 않는 경우
WHERE name NOT LIKE 'A%'

5. LIKE와 ESCAPE 문자 사용

-- %나 _를 검색하고 싶을 때
WHERE column LIKE '%\\%%' ESCAPE '\\'  -- % 문자를 포함하는 값
WHERE column LIKE '%\\_%' ESCAPE '\\'-- _ 문자를 포함하는 값

6. 여러 조건 조합하기

-- OR 조합
WHERE
    column LIKE 'A%'
    OR column LIKE 'B%'

-- AND 조합
WHERE
    column LIKE 'A%'
    AND column LIKE '%Z'

7. LIKE vs REGEXP 성능 비교

-- LIKE (더 빠름, 단순한 패턴)
WHERE email LIKE '%.com'

-- REGEXP (더 느림, 복잡한 패턴)
WHERE email REGEXP '\\\\.com$'

8. 실용적인 조합 예시

-- 이름이 '김'씨이고 이메일이 gmail인 사용자
SELECT * FROM users
WHERE
    name LIKE '김%'
    AND email LIKE '%@gmail.com';

-- 파일명이 'report'로 시작하고 pdf나 doc인 파일
SELECT * FROM files
WHERE
    filename LIKE 'report%'
    AND (
        filename LIKE '%.pdf'
        OR filename LIKE '%.doc'
    );

-- 전화번호가 010으로 시작하지 않는 연락처
SELECT * FROM contacts
WHERE phone NOT LIKE '010-%';

-- 이름이 3글자이고 '김'씨인 사용자
SELECT * FROM users
WHERE name LIKE '김__';

LIKE는 정규표현식보다 기능은 제한적이지만:

  1. 더 빠른 성능
  2. 더 단순한 문법
  3. 더 쉬운 이해와 유지보수

이러한 장점이 있어 단순한 패턴 매칭에 자주 사용됩니다. 복잡한 패턴이 필요한 경우에는 REGEXP를 사용하는 것이 좋습니다.

'자격증 공부 > SQLD' 카테고리의 다른 글

[SQL] SUBSTRING  (0) 2024.11.02
[프로그래머스] 조건에 맞는 사용자 정보 조회하기 - MySQL  (0) 2024.11.02
[SQL] EXTRACT - 추출  (0) 2024.11.02
[SQL] 정규표현식  (0) 2024.11.02
[SQL] HAVING  (0) 2024.11.02