SQL

%와 _

초코너무조코 2025. 1. 23. 15:14
728x90

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에서 문자열 검색을 유연하게 할 수 있도록 도와주는 중요한 도구입니다.

 

728x90