MySQL에서 모든 필드(레코드)의 처음 두 문자를 제거하려면 SUBSTRING() 함수를 사용해야 합니다. SUBSTRING() 함수는 문자열에서 지정한 위치부터 시작하는 부분 문자열을 반환하므로, 시작 위치를 3으로 설정하면 앞의 두 문자가 자연스럽게 제거됩니다.
SUBSTRING() 함수 기본 문법
UPDATE yourTableName SET yourColumnName=SUBSTRING(yourColumnName,3) WHERE yourCondition;
WHERE 절에 조건을 추가하면 특정 레코드만 선택적으로 수정할 수도 있습니다. 위 문법을 실제로 이해하기 위해 예제 테이블을 만들어 보겠습니다.
예제 테이블 생성
테이블 생성 쿼리는 다음과 같습니다.
mysql> create table RemoveFirstTwoCharacterDemo -> ( -> Id int NOT NULL AUTO_INCREMENT, -> StringValue varchar(30), -> PRIMARY KEY(Id) -> ); Query OK, 0 rows affected (1.04 sec)
샘플 데이터 삽입
insert 명령을 사용하여 테이블에 여러 개의 레코드를 삽입합니다. 쿼리는 다음과 같습니다.
mysql> insert into RemoveFirstTwoCharacterDemo(StringValue) values('U:100');
Query OK, 1 row affected (0.13 sec)
mysql> insert into RemoveFirstTwoCharacterDemo(StringValue) values('S:20');
Query OK, 1 row affected (0.21 sec)
mysql> insert into RemoveFirstTwoCharacterDemo(StringValue) values('N/A');
Query OK, 1 row affected (0.12 sec)
mysql> insert into RemoveFirstTwoCharacterDemo(StringValue) values('T:8');
Query OK, 1 row affected (0.16 sec)
mysql> insert into RemoveFirstTwoCharacterDemo(StringValue) values('N/A');
Query OK, 1 row affected (0.12 sec)
mysql> insert into RemoveFirstTwoCharacterDemo(StringValue) values('W:99');
Query OK, 1 row affected (0.19 sec)삽입된 데이터 확인
select 문을 사용하여 테이블의 모든 레코드를 조회합니다.
mysql> select *from RemoveFirstTwoCharacterDemo;
출력 결과는 다음과 같습니다.
+----+-------------+ | Id | StringValue | +----+-------------+ | 1 | U:100 | | 2 | S:20 | | 3 | N/A | | 4 | T:8 | | 5 | N/A | | 6 | W:99 | +----+-------------+ 6 rows in set (0.00 sec)
처음 두 문자 제거 쿼리 실행
이제 'N/A' 값은 그대로 두고, 나머지 레코드에서만 앞의 두 문자를 제거하는 UPDATE 쿼리를 실행합니다.
mysql> update RemoveFirstTwoCharacterDemo set StringValue=SUBSTRING(StringValue,3) -> where StringValue <> 'N/A'; Query OK, 4 rows affected (0.27 sec) Rows matched: 4 Changed: 4 Warnings: 0
변경 결과 확인
select 문으로 다시 한번 테이블의 레코드를 조회하여 변경 사항을 확인합니다.
mysql> select *from RemoveFirstTwoCharacterDemo;
출력 결과는 다음과 같습니다.
+----+-------------+ | Id | StringValue | +----+-------------+ | 1 | 100 | | 2 | 20 | | 3 | N/A | | 4 | 8 | | 5 | N/A | | 6 | 99 | +----+-------------+ 6 rows in set (0.00 sec)
출력 결과를 보면 'N/A' 값이 있는 레코드는 WHERE 조건에 의해 원본 그대로 유지되었고, 나머지 레코드에서는 접두사(U:, S:, T:, W:)가 성공적으로 제거되어 숫자 부분만 남은 것을 확인할 수 있습니다. 이처럼 SUBSTRING() 함수와 WHERE 절을 조합하면 원하는 레코드만 선택적으로 문자열을 가공할 수 있습니다.