- ์นดํ ๊ณ ๋ฆฌ:
REGEXP_REPLACEยถ
์ง์ ๋ ํจํด(๋๋ ํจํด์ ๋ชจ๋ ๋ฐ์ ํญ๋ชฉ)์ด ์ ๊ฑฐ๋๊ฑฐ๋ ๋์ฒด ๋ฌธ์์ด๋ก ๋ฐ๋ ์ฃผ์ ๋ฅผ ๋ฐํํฉ๋๋ค.
๋ฌธ์์ด ํจ์(์ ๊ท์) ๋ ์ฐธ์กฐํ์ญ์์ค.
๊ตฌ๋ฌธยถ
REGEXP_REPLACE( <subject> , <pattern> [ , <replacement> , <position> , <occurrence> , <parameters> ] )
์ธ์ยถ
ํ์:
subject
์ผ์น ํญ๋ชฉ์ ๊ฒ์ํ ๋ฌธ์์ด์ ๋๋ค.
pattern
์ผ์นํ ํจํด์ ๋๋ค.
ํจํด ์ง์ ์ ๊ดํ ์ง์นจ์ ๋ฌธ์์ด ํจ์(์ ๊ท์) ์น์ ์ ์ฐธ์กฐํ์ญ์์ค.
์ ํ ์ฌํญ:
replacement
ํจํด๊ณผ ์ผ์นํ๋ ํ์ ๋ฌธ์์ด์ ๋ฐ๊พธ๋ ๋ฌธ์์ด์ ๋๋ค. ๋น ๋ฌธ์์ด์ด ์ง์ ๋ ๊ฒฝ์ฐ, ํจ์๋ ์ผ์นํ๋ ๋ชจ๋ ํจํด์ ์ ๊ฑฐํ๊ณ ๊ฒฐ๊ณผ ๋ฌธ์์ด์ ๋ฐํํฉ๋๋ค.
๊ธฐ๋ณธ๊ฐ:
''
(๋น ๋ฌธ์์ด).position
ํจ์๊ฐ ์ผ์น ํญ๋ชฉ ๊ฒ์์ ์์ํ๋ ๋ฌธ์์ด ์์ ๋ถ๋ถ์ ๋ฌธ์ ์์ ๋๋ค.
๊ธฐ๋ณธ๊ฐ:
1
(์ผ์น ํญ๋ชฉ ๊ฒ์์ ์ผ์ชฝ์ ์ฒซ ๋ฒ์งธ ๋ฌธ์์์ ์์๋จ)occurrence
ํจํด์ ์ด๋ ๋ฐ์ ํญ๋ชฉ์ ๋ฐ๊ฟ์ง ์ง์ ํฉ๋๋ค.
0
์ด ์ง์ ๋ ๊ฒฝ์ฐ, ๋ชจ๋ ๋ฐ์ ํญ๋ชฉ์ด ๋ฐ๋๋๋ค.๊ธฐ๋ณธ๊ฐ:
0
(๋ชจ๋ ๋ฐ์ ํญ๋ชฉ)parameters
์ผ์น ํญ๋ชฉ์ ๊ฒ์ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋งค๊ฐ ๋ณ์๋ฅผ ์ง์ ํ๋ ํ๋ ์ด์์ ๋ฌธ์๋ก ๋ ๋ฌธ์์ด์ ๋๋ค. ์ง์๋๋ ๊ฐ:
๋งค๊ฐ ๋ณ์
์ค๋ช
c
๋/์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๋ ์ผ์น
i
๋/์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๋ ์ผ์น
m
์ฌ๋ฌ ์ค ๋ชจ๋
e
ํ์ ์ผ์น ํญ๋ชฉ ์ถ์ถ
s
POSIX ์์ผ๋์นด๋ ๋ฌธ์
.
๋ `` `` ๊ณผ ์ผ์นํฉ๋๋ค.๊ธฐ๋ณธ๊ฐ:
c
์์ธํ ๋ด์ฉ์ ์ ๊ท์์ ๋งค๊ฐ ๋ณ์ ์ง์ ํ๊ธฐ ์น์ ์ ์ฐธ์กฐํ์ญ์์ค.
๋ฐํยถ
VARCHAR ํ์์ ๊ฐ์ ๋ฐํํฉ๋๋ค.
์ผ์นํ๋ ํญ๋ชฉ์ด ์์ผ๋ฉด ์๋ ์ฃผ์ ๋ฅผ ๋ฐํํฉ๋๋ค.
์ธ์๊ฐ NULL์ธ ๊ฒฝ์ฐ NULL์ ๋ฐํํฉ๋๋ค.
์ฌ์ฉ๋ฒ ๋ ธํธยถ
๋์ฒด ๋ฌธ์์ด์ ์บก์ฒ ๊ทธ๋ฃน(์: ํจํด์ ํ์ ์)์ ๋ํ ์ญ์ฐธ์กฐ๋ฅผ ํฌํจํ ์ ์์ต๋๋ค. ์บก์ฒ ๊ทธ๋ฃน์ ๊ดํธ(
( )
)๋ก ๋ฌถ์ธ ์ ๊ท์์ ๋๋ค. ์บก์ฒ ๊ทธ๋ฃน์ ์ต๋ ์๋ 9์ ๋๋ค.์ญ์ฐธ์กฐ๋ ์บก์ฒ ๊ทธ๋ฃน ๋ด์ ์๊ณผ ์ผ์นํฉ๋๋ค. ์ญ์ฐธ์กฐ๋
n
ํ์์ ์ทจํ๋ฉฐ, ์ฌ๊ธฐ์n
์ 0์์ 9๊น์ง์ ๊ฐ์ผ๋ก, ์บก์ฒ ๊ทธ๋ฃน์ ์ผ์น ์ธ์คํด์ค๋ฅผ ๋ํ๋ ๋๋ค. ์์ธํ ๋ด์ฉ์ ์ด ํญ๋ชฉ์ ์ ์น์ ์ ์ฐธ์กฐํ์ญ์์ค.๊ดํธ(
( )
) ๋ฐ ๋๊ดํธ([ ]
)๋ ๋ฆฌํฐ๋ด ๋ฌธ์์ด๋ก ๊ตฌ๋ฌธ ๋ถ์ํ๋ ค๋ฉด ํ์ฌ ์ด์ค ์ด์ค์ผ์ดํ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.์๋ ์๋ ๊ดํธ๋ฅผ ์ ๊ฑฐํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
SELECT REGEXP_REPLACE('Customers - (NY)','\\(|\\)','') AS customers;
+----------------+ | CUSTOMERS | |----------------| | Customers - NY | +----------------+
์ถ๊ฐ์ ์ธ ์ฌ์ฉ๋ฒ ๋ ธํธ๋ ์ ๊ท์ ํจ์์ ๋ํ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ๋ฒ ๋ ธํธ ์ ์ฐธ์กฐํ์ญ์์ค.
๋ฐ์ดํฐ ์ ๋ ฌ ์ธ๋ถ ์ ๋ณดยถ
Arguments with collation specifications currently arenโt supported.
์ยถ
๋ค์ ์๋ ๋ฌธ์์ด์ ๋ชจ๋ ๊ณต๋ฐฑ์ ์๋ ๊ฒ์ผ๋ก ๋ฐ๊ฟ๋๋ค(์ฆ, ๋ชจ๋ ๊ณต๋ฐฑ์ด ์ ๊ฑฐ๋จ).
SELECT REGEXP_REPLACE('It was the best of times, it was the worst of times',
'( ){1,}',
'') AS result;
+------------------------------------------+
| RESULT |
|------------------------------------------|
| Itwasthebestoftimes,itwastheworstoftimes |
+------------------------------------------+
๋ค์ ์๋ ๋ฌธ์์ด times
์ ์ผ์นํ๋ฉฐ, ์ด๋ฅผ ๋ฌธ์์ด days
๋ก ๋ฐ๊ฟ๋๋ค. ์ผ์น๋ ๋ฌธ์์ด์ ์ฒซ ๋ฒ์งธ ๋ฌธ์์์ ์์ํ๋ฉฐ, ํ์ ๋ฌธ์์ด์ ๋ ๋ฒ์งธ ๋ฐ์ ํญ๋ชฉ์ ๋ฐ๊ฟ๋๋ค.
SELECT REGEXP_REPLACE('It was the best of times, it was the worst of times',
'times',
'days',
1,
2) AS result;
+----------------------------------------------------+
| RESULT |
|----------------------------------------------------|
| It was the best of times, it was the worst of days |
+----------------------------------------------------+
๋ค์ ์๋ ์ญ์ฐธ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด firstname middlename lastname
์ lastname, firstname middlename
์ผ๋ก ์ฌ์ ๋ ฌํ๊ณ lastname
๋ฐ firstname
์ฌ์ด์ ์ผํ๋ฅผ ์ฝ์
ํฉ๋๋ค.
SELECT REGEXP_REPLACE('firstname middlename lastname',
'(.*) (.*) (.*)',
'\\3, \\1 \\2') AS name_sort;
+--------------------------------+
| NAME_SORT |
|--------------------------------|
| lastname, firstname middlename |
+--------------------------------+