PostgreSQL 문자열 바꾸기
-
PostgreSQL의
replace()
함수를 사용하여 문자열 바꾸기 -
PostgreSQL의
regexp_replace()
함수를 사용하여 문자열 바꾸기 -
추가 PostgreSQL
replace()
함수 예제
이 튜토리얼에서는 PostgreSQL replace()
함수를 사용하여 문자열을 교체하는 방법에 대해 설명합니다.
PostgreSQL의 replace()
함수를 사용하여 문자열 바꾸기
PostgreSQL replace()
함수에는 모두 텍스트 유형인 다음 매개변수가 있습니다.
replace (string text, from text, to text)
string
매개변수는 replace()
함수가 수행되는 소스 텍스트입니다. from
매개변수는 string
인수의 하위 문자열이며 변경할 부분을 나타냅니다.
to
매개변수는 from
인수가 변경될 string
인수의 하위 문자열을 나타냅니다.
예를 들어, 다음과 같이 replace()
함수를 사용하여 Catfish
단어를 Turtle
로 변경해 보겠습니다.
SELECT replace ('Catfish', 'Catfish', 'Turtle');
결과는 다음과 같습니다.
replace
---------
Turtle
다음과 같이 Catfish
의 하위 문자열 Cat
을 Jelly
로 교체해 보겠습니다.
SELECT replace('Catfish', 'Cat', 'Jelly');
결과는 다음과 같습니다.
replace
-----------
Jellyfish
이 함수는 문자열의 특수 문자를 대체하는 데에도 사용할 수 있습니다. 예를 들어 다음과 같이 공백을 쉼표로 바꿉니다.
SELECT replace('A B C D E', ' ', ',');
결과는 다음과 같습니다.
replace
-----------
A,B,C,D,E
임의의 문자 텍스트가 있고 a
문자가 대문자인지 소문자인지에 관계없이 a
문자를 b
로 교체하려고 한다고 가정해 보겠습니다. 다음과 같이 이 명령을 실행하면 다음과 같습니다.
SELECT replace('agAdavA', 'a', 'b');
결과는 다음과 같습니다.
replace
---------
bgAdbvA
위의 결과는 소문자 a
만 교체되었으므로 대문자 a
와 소문자 b
의 모든 항목을 b
로 교체해야 하는 요구 사항을 충족하지 않습니다. 따라서 PostgreSQL regexp_replace()
함수를 도입해야 합니다.
PostgreSQL의 regexp_replace()
함수를 사용하여 문자열 바꾸기
PostgreSQL regexp_replace()
함수에는 모두 텍스트 유형인 다음 매개변수가 있습니다.
regexp_replace (string text, pattern text, replacement text [,flags text])
string
인수는 대체 기능이 수행되는 소스 문자열입니다. pattern
매개변수는 문자열 인수의 하위 문자열을 바꾸기 전에 일치 항목이 있어야 하는 정규식을 나타냅니다.
replacement
매개변수는 문자열 인수의 하위 문자열을 변경할 텍스트를 나타냅니다. flags
매개변수는 regexp_replace()
함수의 동작을 변경하는 데 사용할 수 있는 텍스트를 나타냅니다.
a
의 모든 대문자와 소문자를 b
로 변경해야 하는 이전 예에서 다음과 같이 regexp_replace()
함수를 사용할 수 있습니다.
SELECT regexp_replace('agAdavA', '[a | A]+', 'b', 'g');
결과는 다음과 같습니다.
regexp_replace
----------------
bgbdbvb
정규식의 도입으로 대문자와 소문자 a
의 모든 발생이 필요에 따라 대체되었습니다. g
플래그는 a
의 첫 번째 항목뿐만 아니라 모든 항목이 대체되도록 합니다.
다음은 패턴 일치에 대한 PostgreSQL 문서입니다.
추가 PostgreSQL replace()
함수 예제
다음과 같이 단일 단어로 구성된 text
라는 열이 있는 테이블이 있다고 가정해 보겠습니다.
id | text |
---|---|
1 | Red |
2 | Green |
3 | Blue |
4 | Red |
5 | Red |
그리고 Red
단어의 모든 항목을 Yellow
로 바꾸고 싶습니다. 다음과 같이 replace()
함수를 사용할 수 있습니다.
UPDATE demo SET text = replace(text, 'Red', 'Yellow');
결과는 다음과 같습니다.
id | text
----+--------
1 | Yellow
2 | Green
3 | Blue
4 | Yellow
5 | Yellow
같은 테이블에 다음과 같이 텍스트
필드에 특수 문자가 포함된 단어가 있다고 가정해 보겠습니다.
id | text |
---|---|
6 | g-r-e-e-n |
7 | 1-23–4 |
8 | one-and-two |
9 | —n—2— |
10 | —– |
그리고 모든 하이픈(-
)을 밑줄(_
)로 바꾸고 싶습니다. replace()
함수는 다음과 같이 이를 달성할 수 있습니다.
UPDATE demo SET text = replace(text, '-', '_');
결과는 다음과 같습니다.
id | text
----+-------------
6 | g_r_e_e_n
7 | 1_23__4
8 | one_and_two
9 | ___n___2___
10 | _____
다음과 같이 text
필드에 단일 단어 대신 문장이 포함되도록 테이블에 더 많은 레코드를 삽입하는 경우:
id | text |
---|---|
11 | She bought a red bag |
12 | Green is a good color |
13 | The sky is blue |
14 | The color of the shirt is red |
15 | They plan to go with blue or red balloons |
그리고 red
라는 단어를 yellow
로 바꾸고 싶습니다. 이것은 다음과 같이 replace()
함수를 사용하여 수행할 수 있습니다.
UPDATE demo SET text = replace(text, 'red', 'yellow');
결과는 다음과 같습니다.
id | text
----+----------------------------------------------
11 | She bought a yellow bag
12 | Green is a good color
13 | The sky is blue
14 | The color of the shirt is yellow
15 | They plan to go with blue or yellow balloons
따라하기 위해 실행할 명령은 다음과 같습니다.
--CREATE statement
CREATE TABLE demo (
id INTEGER PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
text TEXT NOT NULL
);
--insert first set of records
INSERT INTO demo (text)
VALUES
('Red'),
('Green'),
('Blue'),
('Red'),
('Red');
--insert second set of records
INSERT INTO demo (text)
VALUES
('g-r-e-e-n'),
('1-23--4'),
('one-and-two'),
('---n---2---'),
('-----');
--insert third and final set of records
INSERT INTO demo (text)
VALUES
('She bought a red bag'),
('Green is a good color'),
('The sky is blue'),
('The color of the shirt is red'),
('They plan to go with blue or red balloons');
--update statements that include the REPLACE function
UPDATE demo SET text = replace(text, 'Red', 'Yellow');
UPDATE demo SET text = replace(text, '-', '_');
UPDATE demo SET text = replace(text, 'red', 'yellow');
--view all the changes
SELECT * FROM demo;
이 튜토리얼에서는 PostgreSQL replace()
및 regexp_replace
함수를 사용하여 문자열을 교체하는 방법과 replace()
함수를 사용하여 테이블의 문자열을 업데이트하는 방법에 대해 논의했습니다.