MySQL에서 특정 열의 마지막 부분에 포함된 문자를 검색하려면 RIGHT() 함수와 INSTR() 함수를 조합하여 사용할 수 있습니다. 이번 글에서는 예제를 통해 직원 이름 열에서 이름 뒤쪽(성)을 기준으로 데이터를 검색하는 방법을 단계별로 알아보겠습니다.
1. 테이블 생성
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable
-> (
-> EmployeeName varchar(100)
-> );
Query OK, 0 rows affected (0.81 sec)
2. 샘플 데이터 삽입
INSERT 명령을 사용하여 테이블에 레코드를 입력합니다.
mysql> insert into DemoTable values('Adam Smith');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('Carol Taylor');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('David Miller');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values('Chris Evan');
Query OK, 1 row affected (0.13 sec)
3. 전체 레코드 확인
SELECT 문을 사용하여 테이블에 저장된 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
출력 결과
위 쿼리는 다음과 같은 결과를 반환합니다.
+--------------+
| EmployeeName |
+--------------+
| Adam Smith |
| Carol Taylor |
| David Miller |
| Chris Evan |
+--------------+
4 rows in set (0.00 sec)
4. 열의 마지막 문자 기준 검색 쿼리
다음은 열의 마지막 부분에서 'Mille'로 시작하는 문자열을 검색하는 쿼리입니다.
mysql> select *from DemoTable where Right(EmployeeName, InStr(EmployeeName, ' ')) LIKE 'Mille%';
출력 결과
위 쿼리는 다음과 같은 결과를 반환합니다.
+--------------+
| EmployeeName |
+--------------+
| David Miller |
+--------------+
1 row in set (0.00 sec)
쿼리 동작 원리
이 쿼리가 어떻게 동작하는지 살펴보겠습니다.
INSTR(EmployeeName, ' ')는 이름 문자열에서 첫 번째 공백의 위치를 반환합니다. 예를 들어 'David Miller'의 경우 공백은 6번째 자리에 있습니다.
RIGHT(EmployeeName, 6)는 문자열의 오른쪽 끝에서 6글자를 잘라내어 'Miller'를 반환합니다.
마지막으로 LIKE 'Mille%' 조건과 비교하여, 이름 뒷부분이 'Mille'로 시작하는 레코드만 필터링됩니다. 그 결과 성이 'Miller'인 'David Miller' 한 건만 정확하게 조회되는 것입니다.
이처럼 RIGHT()와 INSTR() 함수를 함께 사용하면 열 값의 뒷부분을 손쉽게 추출하고 원하는 패턴과 일치하는 데이터를 효율적으로 검색할 수 있습니다.