LIKE 연산자는 WHERE 절에서 특정 패턴을 가진 문자열을 검색할 때 사용됩니다. 이때 패턴을 정의하기 위해 %와 _ 와일드카드를 함께 사용합니다. SQLD 시험에서는 이 와일드카드의 정확한 의미를 묻는 문제가 자주 출제됩니다.
WHERE 절| 와일드카드 | 의미 | 시험 핵심 포인트 |
|---|---|---|
% | 0개 이상의 임의의 문자열 | 0글자도 포함된다는 점이 중요! |
_ | 정확히 1개의 임의의 문자 | 반드시 1글자가 있어야 한다. |
| 패턴 | 설명 | 매칭되는 예시 | 매칭되지 않는 예시 |
|---|---|---|---|
'A%' | A로 시작하는 모든 문자열 | A, Apple, A123 | B, BA |
'%A' | A로 끝나는 모든 문자열 | A, Banana, 12A | AB, B |
'%A%' | A를 포함하는 모든 문자열 | Apple, Banana, 1A1 | B, C |
'A_' | A로 시작하고 두 글자인 문자열 | AB, A1, AZ | A, ABC |
'__A' | 세 번째 글자가 A인 문자열 | BCA, 12A | A, BA, BCA_ |
LIKE 연산자는 문자열 비교에만 사용됩니다._는 반드시 1글자를 의미합니다. 패턴에 _가 2개 있으면 정확히 2글자가 필요합니다.%는 0글자도 포함합니다. 예를 들어 LIKE 'A%'는 'A'라는 단독 문자열도 포함합니다.NULL 값은 LIKE 연산자로 비교할 수 없습니다. (IS NULL 사용)%, _) 자체를 검색하려면 ESCAPE 키워드를 사용해야 합니다.% (퍼센트) → 무한대처럼 여러 개를 의미. (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 '$_%';
LIKE 'A%'는 'A'로 시작하는 모든 문자열을 의미하며, %가 0글자를 포함하므로 A라는 문자열 단독으로도 매칭됩니다.'test'는 4글자이므로, 최소 6글자가 되려면 뒤에 2글자 이상이 더 와야 합니다. __는 정확히 2글자, %는 0개 이상의 문자를 의미하므로 test 뒤에 최소 2글자 이상이 오는 패턴을 완성합니다.ESCAPE 키워드를 사용해야 합니다. \ _는 \를 이스케이프 문자로 사용하여 _를 일반 문자로 인식하게 만듭니다.