코딩 스쿨 SQL

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

SQL Wildcards

SQL 와일드카드 (Wildcards): 패턴 매칭을 위한 특수 문자

  • *SQL 와일드카드(Wildcards)**는 LIKE 연산자와 함께 사용하여 문자열에서 특정 패턴을 검색할 때 유용하게 쓰입니다. 와일드카드는 SQL 쿼리에서 하나 이상의 문자를 대체하는 특수 문자로, 데이터 검색 시 매우 유연하게 사용할 수 있습니다. 이를 통해 문자열의 시작, 끝, 또는 중간에 특정 패턴이 있는 값을 찾을 수 있습니다.

1. 주요 SQL 와일드카드

SQL 와일드카드는 주로 두 가지가 있습니다:

  • %: 0개 이상의 임의의 문자와 일치합니다.
  • _: 정확히 1개의 임의의 문자와 일치합니다.

이 와일드카드들은 주로 LIKE 연산자와 함께 사용됩니다.

2. % 와일드카드

% 와일드카드는 0개 이상의 임의의 문자를 대체합니다. 즉, 특정 문자열의 시작, 중간, 끝에 위치한 패턴을 찾을 수 있습니다.

예제:

  • 'A%': 'A'로 시작하는 모든 값을 찾습니다.
  • '%B': 'B'로 끝나는 모든 값을 찾습니다.
  • '%C%': 'C'가 포함된 모든 값을 찾습니다.

예제 1: 'J'로 시작하는 이름 찾기

SELECT name
FROM employees
WHERE name LIKE 'J%';

이 쿼리는 이름이 'J'로 시작하는 모든 직원을 반환합니다.

결과 예시:

name


John


Jane


Jack


예제 2: 'e'로 끝나는 이름 찾기

SELECT name
FROM employees
WHERE name LIKE '%e';

이 쿼리는 이름이 'e'로 끝나는 모든 직원을 반환합니다.

결과 예시:

name


Jane


Alice


Steve


예제 3: 'an'이 포함된 이름 찾기

SELECT name
FROM employees
WHERE name LIKE '%an%';

이 쿼리는 이름에 'an'이 포함된 모든 직원을 반환합니다.

결과 예시:

name


Jane


Andrew


Hannah


3. _ 와일드카드

_ 와일드카드는 정확히 1개의 임의의 문자를 대체합니다. 이 와일드카드를 사용하여 특정 길이의 패턴을 찾을 수 있습니다.

예제:

  • 'A_': 'A'로 시작하고 뒤에 1개의 문자가 있는 값을 찾습니다.
  • 'B__': 'B'로 시작하고 뒤에 2개의 문자가 있는 값을 찾습니다.

예제 1: 정확히 3글자인 이름 찾기

SELECT name
FROM employees
WHERE name LIKE '___';

이 쿼리는 정확히 3글자로 이루어진 이름을 가진 모든 직원을 반환합니다.

결과 예시:

name


Tom


Jim


Ann


예제 2: 'J'로 시작하고 두 번째 문자가 'o'인 이름 찾기

SELECT name
FROM employees
WHERE name LIKE 'Jo_';

이 쿼리는 이름이 'Jo'로 시작하고, 세 번째 문자가 1개 더 있는 모든 직원을 반환합니다.

결과 예시:

name


John


Joel


4. NOT LIKE와 와일드카드 결합

NOT LIKE 연산자는 특정 패턴과 일치하지 않는 데이터를 검색할 때 사용됩니다.

예제: 'J'로 시작하지 않는 이름 찾기

SELECT name
FROM employees
WHERE name NOT LIKE 'J%';

이 쿼리는 이름이 'J'로 시작하지 않는 모든 직원을 반환합니다.

결과 예시:

name


Alice


Bob


Charlie


5. 숫자 데이터와 와일드카드 사용

LIKE 연산자와 와일드카드는 숫자형 데이터가 문자열로 저장된 경우에도 사용할 수 있습니다. 예를 들어, 전화번호나 우편번호가 문자열로 저장되어 있다면 와일드카드를 사용해 검색할 수 있습니다.

예제: '2'로 시작하는 전화번호 찾기

SELECT phone
FROM employees
WHERE phone LIKE '2%';

이 쿼리는 전화번호가 '2'로 시작하는 모든 직원을 반환합니다.

결과 예시:

phone


202-555-1234


213-555-9876


6. 특수 문자를 포함한 검색 (ESCAPE 사용)

ESCAPE 문법을 사용하면 **%**나 _ 같은 와일드카드를 문자 그대로 검색할 수 있습니다.

예제: '%' 문자를 포함한 값을 검색

SELECT comment
FROM feedback
WHERE comment LIKE '%\\\\%%' ESCAPE '\\\\';

이 쿼리는 문자열에 실제 % 문자가 포함된 모든 피드백을 반환합니다.

7. SQL 와일드카드와 대소문자 구분

SQL에서 LIKE 연산자는 기본적으로 대소문자를 구분하지 않습니다(대부분의 SQL 구현에서). 즉, **'A%'**는 'A'와 'a'로 시작하는 값을 모두 찾습니다.

예제: 'a' 또는 'A'로 시작하는 이름 찾기

SELECT name
FROM employees
WHERE name LIKE 'a%';

이 쿼리는 'a'나 'A'로 시작하는 모든 직원을 반환합니다.

결과 예시:

name


Alice


Andrew


8. 실전 예제

예제 1: 'S'로 시작하고 'e'로 끝나는 부서명 찾기

SELECT department
FROM departments
WHERE department LIKE 'S%e';

이 쿼리는 부서명이 'S'로 시작하고 'e'로 끝나는 부서를 반환합니다.

예제 2: 전화번호가 '-' 문자를 포함하는 값 찾기

SELECT phone
FROM employees
WHERE phone LIKE '%-%';

이 쿼리는 전화번호에 '-' 문자가 포함된 값을 반환합니다.

예제 3: 정확히 4글자인 이름 찾기

SELECT name
FROM employees
WHERE name LIKE '____';

이 쿼리는 정확히 4글자로 구성된 이름을 반환합니다.

9. 요약

SQL 와일드카드LIKE 연산자와 함께 문자열에서 특정 패턴을 찾는 데 매우 유용합니다. % 와일드카드는 0개 이상의 문자를 대체하고, _ 와일드카드는 정확히 1개의 문자를 대체합니다. 이 두 와일드카드는 문자열 검색을 보다 유연하게 만들어, 문자열의 시작, 중간, 끝에 특정 패턴이 있는 값을 찾는 데 자주 사용됩니다. NOT LIKEESCAPE 키워드와 결합하여 더욱 복잡한 검색을 수행할 수 있습니다.


copyright ⓒ 스타트코딩 all rights reserved.
이메일 : startcodingim@gamil.com