문자열에서 마지막 세 글자만 추출하고 싶다면 MySQL의 SUBSTR() 함수를 사용하면 됩니다. 핵심은 위치 값에 음수를 지정하는 것인데, 음수를 넣으면 문자열의 끝에서부터 거꾸로 계산하여 해당 위치 이후의 문자들을 반환합니다.
실제 동작 과정을 예제 테이블을 통해 단계별로 살펴보겠습니다.
1. 예제 테이블 생성
먼저 테스트에 사용할 테이블을 생성합니다:
mysql> create table DemoTable (
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
FirstName varchar(20));
Query OK, 0 rows affected (1.31 sec)2. 샘플 데이터 삽입
INSERT 명령을 사용해 몇 개의 레코드를 추가합니다:
mysql> insert into DemoTable(FirstName) values('John');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(FirstName) values('Carol');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable(FirstName) values('Robert');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(FirstName) values('Chris');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable(FirstName) values('David');
Query OK, 1 row affected (0.17 sec)3. 저장된 데이터 확인
SELECT 명령으로 테이블에 저장된 전체 레코드를 조회합니다:
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다:
+----+-----------+ | Id | FirstName | +----+-----------+ | 1 | John | | 2 | Carol | | 3 | Robert | | 4 | Chris | | 5 | David | +----+-----------+ 5 rows in set (0.00 sec)
4. SUBSTR()로 마지막 세 글자 추출하기
이제 각 이름에서 마지막 세 글자만 가져오는 쿼리입니다. substr(FirstName, -3)처럼 시작 위치를 -3으로 지정하면 문자열 끝에서 세 번째 문자부터 끝까지 반환됩니다:
mysql> select substr(FirstName,-3) from DemoTable;
실행 결과:
+----------------------+ | substr(FirstName,-3) | +----------------------+ | ohn | | rol | | ert | | ris | | vid | +----------------------+ 5 rows in set (0.00 sec)
참고 사항
- SUBSTR()은 SUBSTRING()과 완전히 동일하게 동작하며, 두 함수는 서로 호환됩니다.
- 시작 위치가 양수면 문자열 앞에서부터, 음수면 뒤에서부터 계산됩니다.
- 예를 들어
substr('Robert', -3)은 'ert'를 반환하며,substr('John', -3)은 'ohn'을 반환합니다.
이처럼 SUBSTR() 함수에 음수 위치 값만 활용하면 별도의 복잡한 연산 없이도 손쉽게 문자열의 뒷부분을 추출할 수 있습니다.