`LIKE` 연산자는 SQL에서 문자열 패턴 매칭을 수행할 때 사용됩니다. 주로 `WHERE` 절과 함께 사용하여, 특정 패턴과 일치하는 문자열을 검색합니다. `LIKE` 연산자는 와일드카드 문자와 함께 사용되어 다양한 패턴을 정의할 수 있습니다.
### 기본 문법
```sql
SELECT column_name
FROM table_name
WHERE column_name LIKE pattern;
```
### 와일드카드 문자
- **`%`**: 0개 이상의 문자와 일치합니다.
- **`_`**: 정확히 1개의 문자와 일치합니다.
### 사용 예제
#### 1. **`%` 와일드카드**
- **패턴의 시작 부분이 'A'로 시작하는 문자열 찾기**:
```sql
SELECT name
FROM employees
WHERE name LIKE 'A%';
```
- 이 쿼리는 `name`이 'A'로 시작하는 모든 문자열을 검색합니다. 예를 들어, 'Alice', 'Alan' 등이 포함됩니다.
- **패턴의 끝 부분이 'son'으로 끝나는 문자열 찾기**:
```sql
SELECT name
FROM employees
WHERE name LIKE '%son';
```
- 이 쿼리는 `name`이 'son'으로 끝나는 모든 문자열을 검색합니다. 예를 들어, 'Johnson', 'Mason' 등이 포함됩니다.
- **문자열에 'an'이 포함된 경우**:
```sql
SELECT name
FROM employees
WHERE name LIKE '%an%';
```
- 이 쿼리는 `name`에 'an'이 포함된 모든 문자열을 검색합니다. 예를 들어, 'Janet', 'Nathan' 등이 포함됩니다.
#### 2. **`_` 와일드카드**
- **패턴의 2번째 위치에 'a'가 있는 문자열 찾기**:
```sql
SELECT name
FROM employees
WHERE name LIKE '_a%';
```
- 이 쿼리는 `name`의 두 번째 위치에 'a'가 있는 모든 문자열을 검색합니다. 예를 들어, 'Jack', 'Carol' 등이 포함됩니다.
- **정확히 5자 길이의 문자열 찾기**:
```sql
SELECT name
FROM employees
WHERE name LIKE '_____';
```
- 이 쿼리는 `name`이 정확히 5자로 구성된 모든 문자열을 검색합니다. 각 `_`는 하나의 문자를 나타냅니다.
### 대소문자 구분
- SQL 표준에서는 `LIKE` 연산자가 대소문자를 구분하지 않지만, 데이터베이스에 따라 다를 수 있습니다. Oracle에서는 기본적으로 대소문자를 구분하지 않습니다. 만약 대소문자를 구분하여 검색하고자 한다면, `BINARY` 키워드를 사용할 수 있는 데이터베이스에서 `COLLATE` 절을 사용할 수 있습니다.
### 예외 및 주의사항
- **`LIKE` 연산자는 패턴이 매우 긴 경우 성능에 영향을 줄 수 있습니다.** 인덱스가 효율적으로 사용되지 않을 수 있으므로, 대량의 데이터에서 `LIKE`를 사용하는 경우 성능이 저하될 수 있습니다.
- **특정 패턴에서 `LIKE`와 `=` 연산자를 비교**: `LIKE`는 패턴 매칭을 수행하며, `=`는 정확한 문자열 일치를 수행합니다.
### 요약
- `LIKE` 연산자는 문자열 패턴 매칭을 수행할 때 사용됩니다.
- `%` 와일드카드는 0개 이상의 문자와 일치하고, `_` 와일드카드는 정확히 1개의 문자와 일치합니다.
- `LIKE` 연산자는 문자열의 부분 일치를 검색하는 데 유용하며, 대소문자 구분 여부는 데이터베이스 설정에 따라 달라질 수 있습니다.
'Data Analysis 데이터 분석 > SQL 통한 Database 관리' 카테고리의 다른 글
select nvl() from dual (0) | 2024.08.20 |
---|---|
dual이 뭐니 (0) | 2024.08.20 |
select count(*) CNT from EMP_TBL A, RULE_TBL B where A.Ename like B.Rule (0) | 2024.08.20 |
inner join (0) | 2024.08.20 |
LEFT OUTER JOIN` (0) | 2024.08.20 |