MySQL에서 UPDATE 문을 사용해 문자열에 포함된 하이픈(-)을 제거하려면 replace() 함수를 활용하면 됩니다. replace() 함수는 지정한 문자열에서 특정 문자를 찾아 다른 문자로 치환하는 기능을 하며, 세 번째 인자에 빈 문자열('')을 넣으면 해당 문자를 사실상 삭제하는 효과를 얻을 수 있습니다.
기본 문법
하이픈을 제거하는 UPDATE 문의 기본 문법은 다음과 같습니다.
update yourTableName
set yourColumnName = replace(yourColumnName, '-', '');예제 테이블 생성
문법을 실제로 이해하기 위해 예제 테이블을 먼저 만들어 보겠습니다. 아래 쿼리로 'removeHyphensDemo'라는 테이블을 생성합니다.
mysql> create table removeHyphensDemo
-> (
-> userId varchar(100)
-> );
Query OK, 0 rows affected (0.62 sec)샘플 데이터 삽입
insert 명령어를 사용해 하이픈이 포함된 샘플 데이터를 몇 개 삽입합니다.
mysql> insert into removeHyphensDemo values('John-123-456');
Query OK, 1 row affected (0.22 sec)
mysql> insert into removeHyphensDemo values('Carol-9999-7777-66555');
Query OK, 1 row affected (0.19 sec)
mysql> insert into removeHyphensDemo values('123456-Bob-8765');
Query OK, 1 row affected (0.14 sec)
mysql> insert into removeHyphensDemo values('1678-9870-Sam');
Query OK, 1 row affected (0.21 sec)데이터 조회
select 문으로 테이블의 모든 레코드를 확인해 보겠습니다.
mysql> select *from removeHyphensDemo;
실행 결과는 다음과 같습니다.
+-----------------------+ | userId | +-----------------------+ | John-123-456 | | Carol-9999-7777-66555 | | 123456-Bob-8765 | | 1678-9870-Sam | +-----------------------+ 4 rows in set (0.00 sec)
하이픈 제거 실행
이제 replace() 함수를 사용해 하이픈을 제거하는 UPDATE 쿼리를 실행합니다.
mysql> update removeHyphensDemo -> set userId=replace(userId,'-',''); Query OK, 4 rows affected (0.26 sec) Rows matched: 4 Changed: 4 Warnings: 0
쿼리가 정상적으로 실행되어 4개 행이 모두 변경되었습니다. 다시 한번 테이블 데이터를 조회해 결과를 확인해 보겠습니다.
mysql> select *from removeHyphensDemo;
하이픈이 모두 제거된 최종 출력 결과는 다음과 같습니다.
+--------------------+ | userId | +--------------------+ | John123456 | | Carol9999777766555 | | 123456Bob8765 | | 16789870Sam | +--------------------+ 4 rows in set (0.00 sec)
정리 및 참고 사항
위 예제에서 확인할 수 있듯이, replace(컬럼명, '-', '') 구문 하나만으로 해당 컬럼의 모든 하이픈을 손쉽게 제거할 수 있습니다. 이 방식은 전화번호, 사용자 ID처럼 형식 문자가 섞여 있는 데이터를 정규화할 때 매우 유용합니다.
다만 주의할 점도 있습니다. UPDATE 문은 조건(WHERE 절) 없이 실행하면 테이블의 모든 행에 적용되므로, 대용량 테이블에서는 WHERE 절로 범위를 한정하거나 백업 후 실행하는 것이 안전합니다. 또한 replace() 함수는 대소문자를 구분하지 않는 콜레이션 환경에서도 동작하지만, 여러 종류의 특수문자를 동시에 제거해야 한다면 중첩된 replace() 호출이나 REGEXP_REPLACE() 함수(MySQL 8.0 이상)를 고려해 볼 수 있습니다.