LIKE 연산자 및 와일드카드 정리

TJK·2025년 8월 22일
0

LIKE 연산자 및 와일드카드 정리

LIKE 연산자는 WHERE 절에서 특정 패턴을 가진 문자열을 검색할 때 사용됩니다. 이때 패턴을 정의하기 위해 %_ 와일드카드를 함께 사용합니다. SQLD 시험에서는 이 와일드카드의 정확한 의미를 묻는 문제가 자주 출제됩니다.


1. LIKE 연산자 기본 개념

핵심 개념 (★★★★★)

  • 목적: 문자열 패턴 매칭 검색
  • 주요 사용처: WHERE
  • 대소문자 구분: DBMS마다 다릅니다. SQLD 시험에서는 일반적으로 Oracle 기준으로 대소문자를 구분하는 것으로 이해하면 좋습니다.

2. 와일드카드 종류 및 의미

와일드카드의미시험 핵심 포인트
%0개 이상의 임의의 문자열0글자도 포함된다는 점이 중요!
_정확히 1개의 임의의 문자반드시 1글자가 있어야 한다.

3. LIKE 연산자 사용 예시

패턴설명매칭되는 예시매칭되지 않는 예시
'A%'A로 시작하는 모든 문자열A, Apple, A123B, BA
'%A'A로 끝나는 모든 문자열A, Banana, 12AAB, B
'%A%'A를 포함하는 모든 문자열Apple, Banana, 1A1B, C
'A_'A로 시작하고 두 글자인 문자열AB, A1, AZA, ABC
'__A'세 번째 글자가 A인 문자열BCA, 12AA, BA, BCA_

4. SQLD 시험 핵심 포인트

  • LIKE 연산자는 문자열 비교에만 사용됩니다.
  • _반드시 1글자를 의미합니다. 패턴에 _가 2개 있으면 정확히 2글자가 필요합니다.
  • %0글자도 포함합니다. 예를 들어 LIKE 'A%'는 'A'라는 단독 문자열도 포함합니다.
  • NULL 값은 LIKE 연산자로 비교할 수 없습니다. (IS NULL 사용)
  • 와일드카드(%, _) 자체를 검색하려면 ESCAPE 키워드를 사용해야 합니다.

5. 암기 팁

  • % (퍼센트) → 무한대처럼 여러 개를 의미. (0개 포함)
  • _ (언더바) → 하나의 공간을 차지하는 1개를 의미.

실전 기출 문제 세트

1. 다음 중 LIKE 연산자의 와일드카드 사용에 대한 설명으로 올바르지 않은 것은?
%는 0개 이상의 임의의 문자열을 의미한다.
_는 정확히 1개의 임의의 문자를 의미한다.
LIKE 'A_'A라는 문자열 단독으로는 매칭되지 않는다.
LIKE 'A%'A라는 문자열 단독으로는 매칭되지 않는다.

2. Users 테이블에서 email 컬럼의 값이 'test'로 시작하고 최소 6글자 이상인 사용자를 검색하는 SQL 문은?
SELECT * FROM Users WHERE email LIKE 'test%';
SELECT * FROM Users WHERE email LIKE 'test__%';
SELECT * FROM Users WHERE email LIKE 'test____%';
SELECT * FROM Users WHERE email LIKE 'test_';

3. name 컬럼에 _(언더바)가 포함된 모든 행을 검색하는 SQL 문은?
SELECT * FROM Users WHERE name LIKE '%\_%';
SELECT * FROM Users WHERE name LIKE '%\_%' ESCAPE '\';
SELECT * FROM Users WHERE name LIKE '%_';
SELECT * FROM Users WHERE name LIKE '$_%';


정답 및 해설

  • 문제 1 정답: ④
    • 해설: LIKE 'A%'는 'A'로 시작하는 모든 문자열을 의미하며, %가 0글자를 포함하므로 A라는 문자열 단독으로도 매칭됩니다.
  • 문제 2 정답: ②
    • 해설: 'test'는 4글자이므로, 최소 6글자가 되려면 뒤에 2글자 이상이 더 와야 합니다. __는 정확히 2글자, %는 0개 이상의 문자를 의미하므로 test 뒤에 최소 2글자 이상이 오는 패턴을 완성합니다.
  • 문제 3 정답: ②
    • 해설: 와일드카드 자체를 검색하려면 ESCAPE 키워드를 사용해야 합니다. \ _\를 이스케이프 문자로 사용하여 _를 일반 문자로 인식하게 만듭니다.
profile
Hello world!

0개의 댓글