%와 _
SQL에서 %와 _는 와일드카드(패턴 매칭) 기호로 사용됩니다. 주로 LIKE 연산자와 함께 사용되며, 문자열을 검색할 때 패턴을 지정하는 데 유용합니다.
1. % (퍼센트 기호)
- %는 0개 이상의 문자와 일치하는 와일드카드입니다.
- 문자열에서 특정 위치에 어떤 문자든 0번 이상 올 수 있음을 의미합니다.
사용 예시:
SELECT * FROM employees
WHERE name LIKE 'J%';
설명: name이 'J'로 시작하는 모든 직원들을 찾습니다. J 뒤에 어떤 문자가 오더라도 괜찮습니다. 예를 들어, James, John, Jack 등 모두 해당합니다.
예시 2:
SELECT * FROM employees
WHERE email LIKE '%@gmail.com';
설명: email 필드에 @gmail.com이 포함된 모든 이메일을 찾습니다. @gmail.com 앞에 어떤 문자가 오더라도 상관없습니다.
2. _ (언더스코어)
- _는 하나의 문자와 일치하는 와일드카드입니다.
- 문자열에서 특정 위치에 하나의 문자가 정확히 일치해야 합니다.
사용 예시:
SELECT * FROM employees
WHERE name LIKE 'J_n';
설명: name이 'J'로 시작하고, 그 다음에 어떤 문자가 하나 오고, 마지막으로 'n'으로 끝나는 이름을 찾습니다. 예를 들어, Jan, Jon 등이 해당됩니다.
예시 2:
SELECT * FROM employees
WHERE phone_number LIKE '555-___-____';
설명: phone_number가 '555-'로 시작하고, 그 뒤에 정확히 세 자리 숫자와 그 뒤에 네 자리 숫자가 오는 전화번호를 찾습니다. 예를 들어, 555-123-4567이 해당됩니다.
3. %와 _의 조합 사용
두 와일드카드를 함께 사용하여 더욱 복잡한 패턴을 검색할 수 있습니다. 예를 들어, LIKE 'J_n%'와 같은 쿼리를 작성할 수 있습니다.
예시:
SELECT * FROM employees
WHERE name LIKE 'J_n%';
설명: name이 'J'로 시작, 그 다음에 하나의 문자가 오고, 뒤에 어떤 문자든 0번 이상 올 수 있는 이름을 찾습니다. 예를 들어, Jon, Janet, Jimson 등이 해당됩니다.
4. %와 _의 차이점 정리
와일드카드 의미 예시
% | 0개 이상의 문자와 일치 | 'J%' → James, John, J 등 |
_ | 하나의 문자와 일치 | 'J_n' → Jon, Jan, Jen 등 |
5. 주의사항
- 대소문자 구분: LIKE 연산자는 기본적으로 대소문자를 구분할 수 있습니다. (DBMS에 따라 다를 수 있음)
- 예를 들어, MySQL에서는 기본적으로 대소문자를 구분하지 않지만, Oracle에서는 대소문자를 구분합니다.
- 퍼센트 기호와 밑줄을 문자로 사용하고 싶을 때:
- LIKE 연산자에서 %와 _를 문자 그대로 사용하고 싶다면, 그 문자 앞에 이스케이프 문자(escape character)를 사용해야 합니다.
예시:
SELECT * FROM employees
WHERE name LIKE '100\%' ESCAPE '\';
설명: name에 100%이 포함된 이름을 찾습니다. \%는 %를 문자로 취급하도록 지정한 것입니다.
결론
- %: 0개 이상의 문자와 일치하는 와일드카드.
- _: 정확히 하나의 문자와 일치하는 와일드카드.
- LIKE 연산자와 함께 사용하여 문자열 패턴 매칭을 할 수 있습니다.
이렇게 %와 _는 SQL에서 문자열 검색을 유연하게 할 수 있도록 도와주는 중요한 도구입니다.