결론부터 말씀드리면, MySQL에서는 정규 표현식(REGEXP)을 사용한 UPDATE를 지원하지 않습니다. 따라서 정규 표현식 대신 LIKE 연산자와 REPLACE 함수를 조합하여 원하는 문자열을 치환해야 합니다.
LIKE 연산자를 활용한 UPDATE 기본 문법
UPDATE yourTableName
SET yourColumnName = REPLACE(yourColumnName, 'yourValue', '')
WHERE yourColumnName LIKE '%yourValueThatWillReplace%';
위 문법은 특정 열에서 지정한 값이 포함된 행을 찾아 해당 부분을 다른 문자열로 교체하는 방식입니다. 실제 동작 과정을 예제 테이블을 통해 살펴보겠습니다.
예제 테이블 생성
먼저 테스트용 테이블을 생성합니다.
mysql> create table Replace_Demo
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> Value varchar(20),
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.62 sec)
샘플 데이터 삽입
INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다.
mysql> insert into Replace_Demo(Value) values('221)');
Query OK, 1 row affected (0.22 sec)
mysql> insert into Replace_Demo(Value) values('321');
Query OK, 1 row affected (0.24 sec)
mysql> insert into Replace_Demo(Value) values('354)');
Query OK, 1 row affected (0.18 sec)
mysql> insert into Replace_Demo(Value) values('223)');
Query OK, 1 row affected (0.09 sec)
mysql> insert into Replace_Demo(Value) values('446');
Query OK, 1 row affected (0.13 sec)데이터 조회
SELECT 문으로 저장된 전체 레코드를 확인합니다.
mysql> select * from Replace_Demo;
실행 결과는 다음과 같습니다.
+----+-------+
| Id | Value |
+----+-------+
| 1 | 221) |
| 2 | 321 |
| 3 | 354) |
| 4 | 223) |
| 5 | 446 |
+----+-------+
5 rows in set (0.00 sec)
LIKE 연산자로 문자열 치환하기
이제 REGEXP 대신 LIKE 연산자를 사용해 '221)'이라는 값을 빈 문자열로 교체하는 쿼리를 실행합니다.
mysql> update Replace_Demo set Value = REPLACE(Value,'221)', '' )
-> WHERE Value like '%221)%';
Query OK, 1 row affected (0.21 sec)
Rows matched: 1 Changed: 1 Warnings: 0
업데이트 결과 확인
다시 SELECT 문으로 테이블을 조회하면 변경 사항을 확인할 수 있습니다.
mysql> select * from Replace_Demo;
실행 결과는 다음과 같습니다.
+----+-------+
| Id | Value |
+----+-------+
| 1 | |
| 2 | 321 |
| 3 | 354) |
| 4 | 223) |
| 5 | 446 |
+----+-------+
5 rows in set (0.00 sec)
첫 번째 행의 '221)' 값이 성공적으로 제거된 것을 확인할 수 있습니다.
정리 및 참고 사항
- MySQL의 UPDATE 문에서는 REGEXP 연산자를 직접 사용할 수 없으며, WHERE 절에서는 LIKE 연산자로 패턴 매칭을 처리해야 합니다.
- 문자열 치환이 필요하다면 REPLACE 함수를 함께 활용하는 것이 일반적인 해결 방법입니다.
- 만약 더 복잡한 정규 표현식 기반 치환이 꼭 필요하다면, MySQL 8.0 이상에서 제공하는 REGEXP_REPLACE 함수를 SELECT 문으로 먼저 검증한 후 애플리케이션 단에서 처리하거나, 저장 프로시저를 활용하는 방법도 고려할 수 있습니다.