반응형
 정규식을 사용하여 컬럼에서 특정단어를 가지고 있는 데이터를 찾아 해당단어만 다른 단어로 변경하는 UPDATE 문

 

 

◆ 테이블( city )의 컬럼( city_name )에서 대문자 'S'가 들어가 있는 단어를 찾아 대문자 'A'로 변경하는 경우


UPDATE city
SET city_name = REGEXP_REPLACE(city_name, 'S', 'A', 'g')
WHERE city_name ~ 'S';
  • REGEXP_REPLACE의 'g' 플래그는 Global 옵션으로, 일치하는 모든 항목을 치환한다.
  • WHERE 절에서 사용하는 ~ 연산자는 대소문자를 구분해 문자열을 찾는다.
city_name 
(변경전) (변경후)
SEOUL AEOUL
Seoul Aeoul
seoul seoul
Busan Busan
jeju jeju

 

 

 

◆ 테이블( city )의 컬럼( city_name )에서 대소문자 구분없이 'S'가 들어가 있는 단어를 찾아 대문자 'A'로 변경하는 경우


UPDATE city
SET city_name = REGEXP_REPLACE(city_name, 'S', 'A', 'gi')
WHERE city_name ~* 'S';
  • REGEXP_REPLACE에서 사용하는 'i' 플래그는 Ignore case 옵션으로, 대소문자를 구분하지 않고 매칭할 때 사용된다. 
    이 플래그를 사용하지 않을 경우, 정규식 앞에 (?i)를 붙여 대소문자 구분 없이 매칭하는 방법도 있다. 
    예시) REGEXP_REPLACE(city_name, '(?i)S', 'A', 'g')
  • WHERE 절에서 사용하는 ~* 연산자는 대소문자를 구분하지 않고 문자열을 찾는다.
city_name 
(변경전) (변경후)
SEOUL AEOUL
Seoul Aeoul
seoul Aeoul
Busan BuAan
jeju jeju

 

 

 

◆ 정규식을 사용하지 않는 경우


정규식을 사용하지 않고 특정 단어를 변경할 경우, 변경 대상이 되는 단어는 대소문자가 정확히 일치해야 한다.
따라서 대소문자 구분 없이 변경하고 싶다면 정규식을 사용하는 것이 더 적절하다.

UPDATE city
SET city_name = REPLACE(city_name, 'S', 'A')
WHERE city_name LIKE '%S%';

 

 


글 내용 중 잘못된 부분이 있거나, 첨부하실 내용이 있으시면 댓글로 남겨주세요. 공부하는데 많은 도움이 됩니다.
-- 기억의 유효기간은 생각보다 짧다. --
반응형