MySQL 문자열 끝에서 N개의 문자 제거하기
MySQL에서 문자열 끝에서부터 지정한 개수만큼의 문자를 잘라내려면 substring() 함수와 length() 함수를 함께 사용하면 됩니다. substring()은 문자열의 특정 부분을 추출하는 함수이며, length()는 문자열의 전체 길이를 바이트 단위로 반환하는 함수입니다.
먼저 예제에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable1329
-> (
-> StudentName varchar(40)
-> );
Query OK, 0 rows affected (0.52 sec)
테이블에 데이터 삽입하기
insert 명령어를 사용하여 테이블에 학생 이름 데이터를 추가합니다.
mysql> insert into DemoTable1329 values('David Miller');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable1329 values('Chris Brown');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable1329 values('Adam Smith');
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable1329 values('John Doe');
Query OK, 1 row affected (0.44 sec)저장된 데이터 확인하기
select 문을 사용하여 테이블의 모든 레코드를 조회합니다.
mysql> select * from DemoTable1329;
위 쿼리는 다음과 같은 결과를 출력합니다.
+--------------+
| StudentName |
+--------------+
| David Miller |
| Chris Brown |
| Adam Smith |
| John Doe |
+--------------+
4 rows in set (0.00 sec)
끝에서부터 지정한 개수의 문자 잘라내기
다음은 문자열 끝에서 5개의 문자를 잘라내는 쿼리입니다. length(StudentName) - 5를 사용하여 전체 길이에서 5를 뺀 만큼 앞부분을 추출하는 원리입니다.
mysql> select substring(StudentName, 1, length(StudentName) - 5) from DemoTable1329;
실행 결과는 다음과 같습니다.
+----------------------------------------------------+
| substring(StudentName, 1, length(StudentName) - 5) |
+----------------------------------------------------+
| David M |
| Chris |
| Adam |
| Joh |
+----------------------------------------------------+
4 rows in set (0.00 sec)
결과를 보면 각 이름의 끝에서 5개의 문자가 제거된 것을 확인할 수 있습니다. 예를 들어 'David Miller'는 'David M'이 되었고, 'Chris Brown'은 'Chris'가 되었습니다.
참고로 한글과 같은 멀티바이트 문자를 다룰 때는 length() 대신 char_length()를 사용하는 것이 더 안전합니다. length()는 바이트 수를 기준으로 계산하기 때문에, 멀티바이트 문자셋 환경에서는 의도와 다른 결과가 나올 수 있기 때문입니다.