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
키워드를 사용해야 합니다. \ _
는 \
를 이스케이프 문자로 사용하여 _
를 일반 문자로 인식하게 만듭니다.