320x100
SQL에서 문자열을 다룰 때, 데이터 입력 과정에서 여러 개의 공백이 포함될 수 있습니다. 예를 들어, 사용자 입력값이나 로그 데이터에서 의도치 않게 연속된 공백이 들어가는 경우가 있습니다.
PostgreSQL에서는 이러한 연속된 공백을 단일 공백으로 변환하는 데 REGEXP_REPLACE 함수를 사용할 수 있습니다.
1. REGEXP_REPLACE 함수란?
REGEXP_REPLACE는 정규식을 이용하여 문자열을 변환하는 PostgreSQL의 강력한 문자열 처리 함수입니다. 기본적인 사용법은 다음과 같습니다:
REGEXP_REPLACE(source_string, pattern, replacement, flags)
- source_string: 변환할 문자열
- pattern: 정규식 패턴 (치환 대상)
- replacement: 변환할 문자열
- flags: 변환 방식 지정 (예: g는 전체 일치 항목을 변경)
2. 연속된 공백을 단일 공백으로 변환하기
연속된 공백을 하나의 공백으로 변환하려면 다음과 같은 쿼리를 사용할 수 있습니다.
SELECT REGEXP_REPLACE('Hello World !', '\s+', ' ', 'g');
🔍 정규식 패턴 \s+ 설명
- \s → 공백 문자(space), 탭(\t), 줄바꿈(\n, \r) 등 모든 공백을 의미
- + → 하나 이상 연속된 문자를 의미 (즉, 2개 이상의 공백도 포함)
- ' ' → 변환할 값 (단일 공백)
- 'g' → global 플래그로, 모든 일치 항목을 변환 (없으면 첫 번째 일치 항목만 변경됨)
🏆 실행 결과
Hello World !
즉, 연속된 공백이 하나의 공백으로 변환되었습니다.
3. 실전 예제: 공백이 포함된 데이터 정리
아래와 같은 테이블이 있다고 가정해 보겠습니다.
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name TEXT
);
INSERT INTO users (name) VALUES ('John Doe'), (' Alice Smith ');
사용자 데이터에서 불필요한 공백을 정리하고 싶다면, 다음과 같이 UPDATE 문을 사용할 수 있습니다.
UPDATE users
SET name = REGEXP_REPLACE(name, '\s+', ' ', 'g');
이렇게 하면 name 컬럼의 값에서 모든 연속된 공백이 단일 공백으로 변환됩니다.
🏆 변환 결과
ID원래 값변환 후
1 | John Doe | John Doe |
2 | Alice Smith | Alice Smith |
4. 추가 활용: 앞뒤 공백까지 제거하기
연속된 공백을 단일 공백으로 변환하는 것뿐만 아니라, 앞뒤 공백까지 제거하려면 TRIM() 함수를 함께 사용하면 됩니다.
SELECT TRIM(REGEXP_REPLACE(' PostgreSQL is awesome! ', '\s+', ' ', 'g'));
🏆 실행 결과
PostgreSQL is awesome!
즉, 문장 내의 공백을 정리하면서 앞뒤 공백도 제거할 수 있습니다.
5. 마무리
- PostgreSQL에서 REGEXP_REPLACE를 사용하면 연속된 공백을 단일 공백으로 변환할 수 있습니다.
- \s+ 정규식을 활용하면 공백, 탭, 줄바꿈까지 한 번에 정리할 수 있습니다.
- 데이터 정리 과정에서 TRIM()을 함께 사용하면 앞뒤 공백까지 제거할 수 있어 더욱 깔끔한 결과를 얻을 수 있습니다.
320x100
320x100
'빅데이터 관련 자료' 카테고리의 다른 글
데이터베이스(Database)와 스키마(Schema)의 차이점 (0) | 2025.03.19 |
---|---|
프롬프트 엔지니어가 되기 위한 로드맵 (7) | 2025.03.17 |
Intellij 에서 코드 자동 정렬하기 (0) | 2025.02.11 |
🚛 풀필먼트 서비스에서 데이터 분석은 어떻게 활용될까? (0) | 2025.02.04 |
가설 검정: 데이터 기반 의사결정의 핵심 도구 (0) | 2025.01.22 |