Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 필드(컬럼) 값의 마지막 3자를 제거하는 방법

MySQL에서 문자열 필드의 마지막 몇 글자를 잘라내야 하는 경우가 종종 있습니다. 예를 들어 STU-090처럼 접미사가 붙은 학생 ID에서 뒤의 숫자 부분을 제거하고 싶을 수 있죠. 이번 글에서는 REVERSE()SUBSTR() 함수를 조합하여 필드의 마지막 3자를 손쉽게 버리는 방법을 알아보겠습니다.

1. 테이블 생성하기

먼저 실습에 사용할 테이블을 생성합니다.

mysql> create table DemoTable
    -> (
    -> StudentId varchar(100)
    -> );
Query OK, 0 rows affected (0.58 sec)

2. 샘플 데이터 삽입하기

INSERT 명령을 사용해 테이블에 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable values('STU-090');
Query OK, 1 row affected (0.16 sec)

mysql> insert into DemoTable values('STU-123');
Query OK, 1 row affected (0.15 sec)

mysql> insert into DemoTable values('STU-678');
Query OK, 1 row affected (0.29 sec)

3. 저장된 데이터 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select *from DemoTable;

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

+-----------+
| StudentId |
+-----------+
| STU-090   |
| STU-123   |
| STU-678   |
+-----------+
3 rows in set (0.00 sec)

4. 마지막 3자를 제거하는 쿼리

필드의 마지막 3자를 버리려면 아래와 같은 쿼리를 사용하면 됩니다.

mysql> SELECT REVERSE(SUBSTR(REVERSE(StudentId), 4)) from DemoTable

이 쿼리의 동작 원리는 다음과 같습니다.

① REVERSE(StudentId) — 문자열을 거꾸로 뒤집습니다. 예: STU-090090-UTS

② SUBSTR(..., 4) — 뒤집힌 문자열에서 4번째 문자부터 끝까지 추출합니다. 즉, 원래 문자열의 마지막 3자가 잘려나갑니다.

③ REVERSE(...) — 다시 원래 방향으로 되돌려 최종 결과를 얻습니다.

실행 결과는 다음과 같습니다.

+----------------------------------------+
| REVERSE(SUBSTR(REVERSE(StudentId), 4)) |
+----------------------------------------+
| STU-                                   |
| STU-                                   |
| STU-                                   |
+----------------------------------------+
3 rows in set (0.00 sec)

참고: 더 간단한 대안

사실 MySQL 5.x 이상에서는 LEFT() 함수와 CHAR_LENGTH()를 조합하면 더 직관적으로 처리할 수도 있습니다.

mysql> SELECT LEFT(StudentId, CHAR_LENGTH(StudentId) - 3) FROM DemoTable;

두 방법 모두 동일한 결과를 반환하지만, LEFT + CHAR_LENGTH 조합이 의도를 더 명확하게 드러내므로 가독성 면에서 권장됩니다. 다만 다중 바이트 문자(한글 등)를 다룰 때는 CHAR_LENGTH 대신 문자 단위 길이 계산에 주의해야 합니다.