본문 바로가기

TroubleShooting/DB

update 특정 필드 내 문자열 변경 on MySQL

728x90

MySQL DB 테이블 내에 특정 필드안에 포함된 문자열을 다른 걸로 바꿔야 할일이 발생했다.

예를 들어 URL 을 가진 필드값이 'http://addr1.com/abc/cde/efg' 를 'http://addr2.com/abc/cde/efg' 로 변경한다. 변경해야할 시나리오는 문자열 앞부분만 바꿔주면 되는 상황이다. (addr1 -> addr2)

갯수를 세어보니 해당 데이터 건수가 1만건이 넘어가서 이걸 프로그램을 짜야하나 싶었다.

그런데 찾아보니 update 문에 replace 함수를 사용할 수가 있었다.

update [테이블명]
set
	변경할필드명 = replace(변경할필드명, '이전문자열', '새로운문자열')

 

그래서 다음과 같이 전체 문자열에서 변경할 문자열만 지정해서 적용하니 생각보다 빨리 처리된다. 

update tb_file_data
set
file_url = replace(file_url, ' addr1.com ', ' addr2.com ')
where CREATE_DATETIME between '2018-12-31' and '2020-03-01';

 

참고 사이트를 확인해보니, replace 함수는 insert 나 update 문에서만 사용이 가능하다고 한다. 또한 replace 문 이랑은 구분해야 한다.

 

참고

https://www.mysqltutorial.org/mysql-string-replace-function.aspx

 

MySQL REPLACE String Function: Find & Replace Text

This tutorial shows you how to use MySQL REPLACE string function to find and replace text in the database.

www.mysqltutorial.org