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

MySQL에서 마지막 문자가 특정 문자일 경우 제거하는 방법

MySQL에서 문자열의 마지막 문자가 특정 문자(예: 물음표 '?')인 경우 이를 제거하려면 SUBSTRING() 함수를 사용하면 됩니다. 먼저 예제 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
    (
    SubjectName varchar(100)
    );
Query OK, 0 rows affected (0.47 sec)

INSERT 명령을 사용하여 테이블에 몇 개의 레코드를 삽입합니다.

mysql> insert into DemoTable values('MySQL');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('MongoDB?');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('Java?');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('C');
Query OK, 1 row affected (0.16 sec)

SELECT 문을 사용하여 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

출력 결과

+-------------+
| SubjectName |
+-------------+
| MySQL       |
| MongoDB?    |
| Java?       |
| C           |
+-------------+
4 rows in set (0.00 sec)

위 결과에서 'MongoDB?'와 'Java?'처럼 일부 레코드는 물음표(?)로 끝나는 것을 확인할 수 있습니다. 이제 마지막 문자가 물음표인 경우 이를 제거하는 쿼리를 살펴보겠습니다.

마지막 문자가 특정 문자일 때 제거하는 UPDATE 쿼리

SUBSTRING() 함수와 CHAR_LENGTH() 함수를 조합하고, WHERE 절에 LIKE 조건을 추가하여 마지막 문자가 '?'인 레코드만 대상으로 지정합니다.

mysql> update DemoTable SET SubjectName = SUBSTRING(SubjectName, 1, CHAR_LENGTH(SubjectName) - 1)
   where SubjectName like '%?';
Query OK, 2 rows affected (0.25 sec)
Rows matched : 2 Changed : 2 Warnings : 0

쿼리 실행 후 테이블 레코드를 다시 한번 확인해 보겠습니다.

mysql> select *from DemoTable;

출력 결과

+-------------+
| SubjectName |
+-------------+
| MySQL       |
| MongoDB     |
| Java        |
| C           |
+-------------+
4 rows in set (0.00 sec)

결과를 보면 'MongoDB?'와 'Java?'에서 마지막 물음표가 성공적으로 제거되어 'MongoDB'와 'Java'로 변경된 것을 확인할 수 있습니다.

쿼리 동작 원리

이 쿼리의 핵심은 다음과 같습니다.

CHAR_LENGTH(SubjectName)는 문자열의 전체 길이를 반환하고, 여기서 1을 빼면 마지막 문자를 제외한 길이가 됩니다. SUBSTRING(SubjectName, 1, CHAR_LENGTH(SubjectName) - 1)은 첫 번째 위치부터 해당 길이까지의 문자열을 추출합니다. WHERE SubjectName LIKE '%?' 조건으로 인해 마지막 문자가 물음표인 레코드만 업데이트되며, 나머지 레코드는 그대로 유지됩니다.

이 방법은 물음표 외에도 콤마(,), 마침표(.) 등 다른 특정 문자를 마지막에서 제거할 때도 동일하게 응용할 수 있습니다.