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

MySQL에서 문자열의 마지막 4글자를 삭제하는 방법

MySQL에서 컬럼 값의 마지막 4글자를 삭제하려면 SUBSTRING() 함수와 UPDATE 명령을 함께 사용하면 됩니다. LENGTH() 함수로 전체 길이를 구한 뒤, 그 값에서 4를 빼면 마지막 4글자가 제거된 나머지 부분만 남게 됩니다.

1. 예제 테이블 생성

먼저 실습에 사용할 테이블을 만들어 보겠습니다.

mysql> create table DemoTable
(
    StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentSubject varchar(100)
);
Query OK, 0 rows affected (0.57 sec)

2. 샘플 데이터 삽입

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

mysql> insert into DemoTable(StudentSubject) values('Introduction to Java');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(StudentSubject) values('Introduction to C');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(StudentSubject) values('Introduction to C++');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable(StudentSubject) values('Spring And Hibernate');
Query OK, 1 row affected (0.13 sec)

3. 현재 데이터 확인

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

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

+-----------+----------------------+
| StudentId | StudentSubject |
+-----------+----------------------+
| 1 | Introduction to Java |
| 2 | Introduction to C |
| 3 | Introduction to C++ |
| 4 | Spring And Hibernate |
+-----------+----------------------+
4 rows in set (0.00 sec)

4. 마지막 4글자 삭제하기

다음은 SUBSTRING() 함수를 활용해 각 행의 마지막 4글자를 삭제하는 UPDATE 쿼리입니다.

mysql> update DemoTable set StudentSubject=SUBSTRING(StudentSubject, 1, LENGTH(StudentSubject)-4);
Query OK, 4 rows affected (0.16 sec)
Rows matched: 4 Changed: 4 Warnings: 0

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

  • LENGTH(StudentSubject): 해당 문자열의 전체 길이를 반환합니다.
  • LENGTH(StudentSubject)-4: 전체 길이에서 4를 빼면 마지막 4글자를 제외한 길이가 됩니다.
  • SUBSTRING(StudentSubject, 1, ...): 첫 번째 문자부터 계산된 길이까지의 부분 문자열을 추출합니다.

5. 결과 검증

마지막 4글자가 실제로 삭제되었는지 다시 한번 조회해 확인해 보겠습니다.

mysql> select *from DemoTable;

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

+-----------+------------------+
| StudentId | StudentSubject |
+-----------+------------------+
| 1 | Introduction to |
| 2 | Introduction |
| 3 | Introduction to |
| 4 | Spring And Hiber |
+-----------+------------------+
4 rows in set (0.00 sec)

위 출력 결과를 보면 'Java', 'C', 'C++', 'nate' 등 각 문자열의 마지막 4글자가 성공적으로 삭제된 것을 확인할 수 있습니다.

참고 사항

멀티바이트 문자(한글 등 UTF-8 문자열)를 다룰 때는 LENGTH() 대신 CHAR_LENGTH() 함수를 사용하는 것이 안전합니다. LENGTH()는 바이트 수를 기준으로 계산하기 때문에 한글처럼 여러 바이트로 저장되는 문자에서는 의도와 다른 결과가 나올 수 있습니다.