코딩 스쿨 SQL

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

SQL Avg

SQL LIKE: 패턴 매칭을 통한 데이터 검색

SQL LIKE 연산자는 문자열 데이터에서 특정 패턴을 검색할 때 사용됩니다. 일반적으로 WHERE 절과 함께 사용되며, LIKE 연산자는 와일드카드 문자와 결합하여 유연하게 데이터를 검색할 수 있습니다. LIKE는 특정 문자가 포함된 값, 특정 문자로 시작하거나 끝나는 값을 찾을 때 유용합니다.

1. 기본 LIKE 문법

LIKE 연산자의 기본 문법은 다음과 같습니다:

SELECT 열이름
FROM 테이블이름
WHERE 열이름 LIKE '패턴';

  • 열이름: 검색할 열의 이름.
  • 패턴: 검색할 패턴을 지정합니다. 패턴 내에는 와일드카드 문자를 사용할 수 있습니다.

2. LIKE 연산자에서 사용되는 와일드카드

LIKE 연산자는 두 가지 주요 와일드카드를 지원합니다:

  1. %: 0개 이상의 임의의 문자.
    • 예: 'A%'는 'A'로 시작하는 모든 값을 찾음.
    • 예: '%A'는 'A'로 끝나는 모든 값을 찾음.
    • 예: '%A%'는 'A'를 포함하는 모든 값을 찾음.
  2. _: 정확히 1개의 임의의 문자.
    • 예: 'A_'는 'A'로 시작하고 그 뒤에 정확히 1개의 문자가 있는 값을 찾음.
    • 예: 'A__'는 'A'로 시작하고 그 뒤에 정확히 2개의 문자가 있는 값을 찾음.

3. SQL LIKE 예제

3.1 문자열이 특정 문자로 시작하는 값 찾기

다음은 employees 테이블에서 이름이 'J'로 시작하는 직원들을 검색하는 예제입니다.

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

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

결과 예시:

name


John


Jane


Jake


3.2 문자열이 특정 문자로 끝나는 값 찾기

다음은 employees 테이블에서 이름이 'e'로 끝나는 직원을 검색하는 예제입니다.

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

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

결과 예시:

name


Jane


Alice


Steve


3.3 문자열에 특정 문자가 포함된 값 찾기

다음은 employees 테이블에서 이름에 'an'이 포함된 직원을 검색하는 예제입니다.

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

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

결과 예시:

name


Jane


Hannah


Andrew


3.4 정확히 3글자인 값 찾기

다음은 employees 테이블에서 정확히 3글자로 이루어진 이름을 가진 직원을 검색하는 예제입니다.

SELECT name
FROM employees
WHERE name LIKE '___';

이 쿼리는 이름이 정확히 3글자인 모든 직원을 반환합니다.

결과 예시:

name


Tom


Jim


Ann


4. SQL LIKE와 NOT 결합

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

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

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

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

결과 예시:

name


John


Jane


Bob


5. SQL LIKE와 숫자 데이터

LIKE 연산자는 일반적으로 문자열 데이터에서 사용되지만, 숫자형 데이터가 문자열로 저장된 경우에도 사용할 수 있습니다.

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

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

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

결과 예시:

phone


202-555-1234


213-555-9876


6. SQL LIKE와 대소문자 구분

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

예제: 대소문자 구분 없이 'a'로 시작하는 이름 찾기

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

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

결과 예시:

name


Alice


Andrew


7. SQL LIKE와 ESCAPE 사용

특수 문자인 **%**와 **_**를 실제 문자로 검색하고 싶다면 ESCAPE 키워드를 사용하여 이 문자를 이스케이프 처리할 수 있습니다.

예제: '%' 문자를 포함한 이름 찾기

SELECT name
FROM employees
WHERE name LIKE '%\\\\%%' ESCAPE '\\\\';

이 쿼리는 '%' 문자가 포함된 이름을 검색합니다.

8. 실전 예제

예제 1: 'J'로 시작하고 4글자인 이름 찾기

SELECT name
FROM employees
WHERE name LIKE 'J___';

이 쿼리는 'J'로 시작하고 정확히 4글자인 이름을 가진 모든 직원을 반환합니다.

예제 2: 'e'로 끝나는 부서명 찾기

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

이 쿼리는 'e'로 끝나는 부서명을 반환합니다.

예제 3: 전화번호에 '-' 문자가 포함된 값 찾기

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

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

9. 요약

SQL LIKE 연산자는 문자열 데이터에서 패턴 매칭을 통해 데이터를 검색할 수 있는 강력한 도구입니다. **%**와 _ 같은 와일드카드를 사용하여 특정 문자로 시작하거나 끝나는 값, 문자열에 특정 문자가 포함된 데이터를 찾을 수 있습니다. NOT LIKEESCAPE를 사용하여 조건을 더욱 세밀하게 제어할 수 있으며, 대소문자를 구분하지 않기 때문에 다양한 문자열 검색에 유용합니다.


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