SQL Avg
SQL LIKE: 패턴 매칭을 통한 데이터 검색
SQL LIKE 연산자는 문자열 데이터에서 특정 패턴을 검색할 때 사용됩니다. 일반적으로 WHERE 절과 함께 사용되며, LIKE 연산자는 와일드카드 문자와 결합하여 유연하게 데이터를 검색할 수 있습니다. LIKE는 특정 문자가 포함된 값, 특정 문자로 시작하거나 끝나는 값을 찾을 때 유용합니다.
1. 기본 LIKE 문법
LIKE 연산자의 기본 문법은 다음과 같습니다:
SELECT 열이름
FROM 테이블이름
WHERE 열이름 LIKE '패턴';
- 열이름: 검색할 열의 이름.
- 패턴: 검색할 패턴을 지정합니다. 패턴 내에는 와일드카드 문자를 사용할 수 있습니다.
2. LIKE 연산자에서 사용되는 와일드카드
LIKE 연산자는 두 가지 주요 와일드카드를 지원합니다:
- %: 0개 이상의 임의의 문자.
- 예:
'A%'
는 'A'로 시작하는 모든 값을 찾음. - 예:
'%A'
는 'A'로 끝나는 모든 값을 찾음. - 예:
'%A%'
는 'A'를 포함하는 모든 값을 찾음.
- 예:
- _: 정확히 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 LIKE와 ESCAPE를 사용하여 조건을 더욱 세밀하게 제어할 수 있으며, 대소문자를 구분하지 않기 때문에 다양한 문자열 검색에 유용합니다.