์นดํ…Œ๊ณ ๋ฆฌ:

๋ฌธ์ž์—ด ํ•จ์ˆ˜(์ •๊ทœ์‹)

REGEXP_REPLACEยถ

์ง€์ •๋œ ํŒจํ„ด(๋˜๋Š” ํŒจํ„ด์˜ ๋ชจ๋“  ๋ฐœ์ƒ ํ•ญ๋ชฉ)์ด ์ œ๊ฑฐ๋˜๊ฑฐ๋‚˜ ๋Œ€์ฒด ๋ฌธ์ž์—ด๋กœ ๋ฐ”๋€ ์ฃผ์ œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ž์—ด ํ•จ์ˆ˜(์ •๊ทœ์‹) ๋„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๊ตฌ๋ฌธยถ

REGEXP_REPLACE( <subject> , <pattern> [ , <replacement> , <position> , <occurrence> , <parameters> ] )
Copy

์ธ์žยถ

ํ•„์ˆ˜:

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;
    
    Copy
    +----------------+
    | 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;
Copy
+------------------------------------------+
| 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;
Copy
+----------------------------------------------------+
| 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;
Copy
+--------------------------------+
| NAME_SORT                      |
|--------------------------------|
| lastname, firstname middlename |
+--------------------------------+