Develop

[PostgreSQL] 문자 자리수 계산 ... 그 외 문자열 함수 활용 예제

issuemaker99 2024. 12. 26. 11:24
728x90

1. 문자열의 길이 계산하기 (LENGTH 함수)

PostgreSQL에서 문자열의 길이를 계산할 때는 LENGTH 함수를 사용합니다. 이 함수는 문자열의 문자 수를 반환합니다.

-- 문자열 길이 계산 예제
SELECT LENGTH('Hello, PostgreSQL!') AS string_length;

 

결과:

string_length
--------------
16

 


2. 문자열 처리에 자주 사용하는 함수

(1) 문자열 연결 (CONCAT)

여러 문자열을 연결할 때 CONCAT 함수를 사용합니다.

SELECT CONCAT('Hello', ', ', 'World!') AS concatenated_string;

 

결과:

concatenated_string
-------------------
Hello, World!

 

(2) 문자열 일부 추출 (SUBSTRING)

문자열에서 특정 부분만 추출할 때 사용합니다.

-- 7번째 문자부터 11글자를 추출
SELECT SUBSTRING('PostgreSQL is powerful' FROM 7 FOR 11) AS substring_result;

 

결과:

substring_result
-----------------
reSQL is p

 

(3) 문자열 치환 (REPLACE)

특정 문자열을 다른 문자열로 바꿀 때 사용합니다.

SELECT REPLACE('2024-12-26', '-', '/') AS replaced_string;

 

결과:

replaced_string
---------------
2024/12/26

 

(4) 문자열 공백 제거 (TRIM, LTRIM, RTRIM)

문자열 양쪽 또는 특정 방향의 공백을 제거할 수 있습니다.

-- 양쪽 공백 제거
SELECT TRIM('   PostgreSQL   ') AS trimmed_string;

-- 왼쪽 공백 제거
SELECT LTRIM('   PostgreSQL') AS ltrimmed_string;

-- 오른쪽 공백 제거
SELECT RTRIM('PostgreSQL   ') AS rtrimmed_string;

 

결과:

trimmed_string | ltrimmed_string | rtrimmed_string
---------------|----------------|-----------------
PostgreSQL     | PostgreSQL     | PostgreSQL

 

(5) 문자열 포함 여부 확인 (POSITION)

문자열 내에서 특정 단어가 시작하는 위치를 반환합니다.

SELECT POSITION('SQL' IN 'PostgreSQL is amazing') AS position;

 

결과:

position
--------
5

 

(6) 문자열 반복 (REPEAT)

특정 문자열을 지정된 횟수만큼 반복합니다.

SELECT REPEAT('PgSQL', 3) AS repeated_string;

 

결과:

repeated_string
---------------
PgSQLPgSQLPgSQL

 

(7) 대소문자 변환 (UPPER, LOWER, INITCAP)

문자열의 대소문자를 변환할 수 있습니다.

-- 대문자로 변환
SELECT UPPER('postgresql') AS upper_case;

-- 소문자로 변환
SELECT LOWER('POSTGRESQL') AS lower_case;

-- 첫 글자만 대문자로 변환
SELECT INITCAP('postgresql is powerful') AS initcap_result;

 

결과:

upper_case | lower_case | initcap_result
-----------|------------|----------------
POSTGRESQL | postgresql | PostgreSQL Is Powerful

 


3. 문자열 함수 활용 사례

(1) 이메일 도메인 추출

이메일 주소에서 도메인 부분만 추출하는 예제입니다.

SELECT SUBSTRING('user@example.com' FROM POSITION('@' IN 'user@example.com') + 1) AS email_domain;

 

결과:

email_domain
------------
example.com

 

(2) 특정 패턴으로 데이터 포맷 변경

날짜 데이터를 YYYY/MM/DD 형식으로 변환합니다.

SELECT REPLACE('2024-12-26', '-', '/') AS formatted_date;

 

결과:

formatted_date
--------------
2024/12/26

 

(3) 텍스트 데이터에서 단어 수 세기

공백을 기준으로 단어 수를 계산합니다.

SELECT LENGTH(REGEXP_REPLACE('PostgreSQL is amazing', '\s+', '', 'g')) AS character_count,
       LENGTH('PostgreSQL is amazing') - LENGTH(REPLACE('PostgreSQL is amazing', ' ', '')) + 1 AS word_count;

 

결과:

character_count | word_count
----------------|-----------
21             | 3
LIST