반응형
정규식을 사용하여 컬럼에서 특정단어를 가지고 있는 데이터를 찾아 해당단어만 다른 단어로 변경하는 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%';
글 내용 중 잘못된 부분이 있거나, 첨부하실 내용이 있으시면 댓글로 남겨주세요. 공부하는데 많은 도움이 됩니다.
-- 기억의 유효기간은 생각보다 짧다. --
반응형
'데이터베이스 > PostgreSQL' 카테고리의 다른 글
[PostgreSQL] 시퀀스 last value(현재 값) 변경 방법 - setval() (2) | 2025.08.13 |
---|---|
[PostgreSQL] FILTER WHERE 절을 이용한 집계함수 활용법 (0) | 2025.05.31 |
[PostgreSQL] 인코딩(encoding) 확인하기 (1) | 2024.10.23 |
[PostgreSQL] 인덱스(Index) 정보를 조회하기(pg_indexes) (1) | 2024.07.28 |
[PostgreSQL] 남은 연결 슬롯은 non-replication 슈퍼유저 연결용으로 남겨 놓았음 (0) | 2024.04.28 |