๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์ž๊ฒฉ์ฆ/SQLD

[SQL ํ™œ์šฉ] ์ •๊ทœ ํ‘œํ˜„์‹

by _silver 2025. 11. 9.

1. ์ •๊ทœ ํ‘œํ˜„์‹

- ๋ฌธ์ž์—ด →(๊ณตํ†ต๋œ ํŠน์ง•)→ ์ผ๋ฐ˜ํ™”ํ•˜๋Š” ๊ทœ์น™

- ์ •๊ทœ ํ‘œํ˜„์‹ ํ•จ์ˆ˜(REGEXP_ํ•จ์ˆ˜): ex. REGEXP_INSTR, REGEXP_SUBSTR...

- ์ •๊ทœ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์€ ์ด์œ 

ex. ์ผ๋ฐ˜ํ™” ๊ทœ์น™ ์ฐพ์•„๋‚ด๊ธฐ

โ‘  MY34

โ‘ก B123TT

โ‘ข 456789B

โ‘ฃ ME!!!

โ‘ค ABCDE

→ ์ˆซ์ž,๋ฌธ์ž ๋ชจ๋‘ ํฌํ•จ: โ‘ , โ‘ก, โ‘ข

→ ์ˆซ์ž 3๊ฐœ ์ด์ƒ ์—ฐ์†์ : โ‘ก, โ‘ข

→ ์˜ˆ์‹œ์˜ ๊ฒฝ์šฐ ๊ณตํ†ต ํŒจํ„ด์˜ ๋ฌธ์ž์—ด์ด 2๊ฐœ ๋ฐ–์— ์—†์–ด์„œ ์ง์ ‘ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์—ฌ๋Ÿฌ๊ฐœ์ธ ๊ฒฝ์šฐ ์ผ์ผํžˆ ์ง€์ •ํ•˜๊ธฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์–ด ์ •๊ทœ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ๋” ํŽธ๋ฆฌํ•จ.

 


2. ์ •๊ทœ์‹ ํ‘œํ˜„ ์ข…๋ฅ˜

- ์†Œ๋ฌธ์ž, ๋Œ€๋ฌธ์ž ์ฃผ์˜

์ข…๋ฅ˜ ์˜๋ฏธ ์˜ˆ์‹œ
\d
[:digit:]
[0-9]
Digit, 0, 1, 2, ..., 9  
\D ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฒƒ  
\s ๊ณต๋ฐฑ  
\t Tab  
\n New line(์—”ํ„ฐ ๋ฌธ์ž)  
\w ๊ธ€์ž(์ˆซ์ž, ์˜·๊ตญ๋ฌธ์ž, (_)) REGEXP_REPLACE('aA!23์ˆ˜ ๋Šฅ._-', \w, ' ') → !  .-
\W ๊ณต๋ฐฑ, (_) ์ œ์™ธํ•œ ํŠน์ˆ˜๊ธฐํ˜ธ REGEXP_REPLACE('aA!23์ˆ˜ ๋Šฅ._-', \W, ' ') → aA23์ˆ˜๋Šฅ_
^ ์‹œ์ž‘๋˜๋Š” ๊ธ€์ž a๋กœ ์‹œ์ž‘ํ•˜๋Š” → ^a
$ ๋งˆ์ง€๋ง‰ ๊ธ€์ž ์ˆซ์ž๋กœ ๋๋‚˜๋Š”  → \d$
\ ๋’ค์— ๊ธฐํ˜ธ ์˜๋ฏธ ์ œ๊ฑฐ '(1234...์— ์žˆ๋Š” '(' ์ฐพ๊ธฐ ^( →^\(
- ()์€ ๊ทธ๋ฃน ์ง€์ •ํ•˜๋Š” ์ •๊ทœ ํ‘œํ˜„์‹ ์ค‘ ์ผ๋ถ€์ด๋ฏ€๋กœ \์„ ์‚ฌ์šฉํ•˜๋ฉฐ ๋’ค์— ๊ธฐํ˜ธ์˜ ์˜๋ฏธ๋ฅผ ์ œ๊ฑฐ ํ•œ๋‹ค. (ex. ์ „ํ™”๋ฒˆํ˜ธ)
() ๊ทธ๋ฃน ์ง€์ •  
| ๋˜๋Š” abc
a123
b123
a ๋˜๋Š” b๋กœ ์‹œ์ž‘ ์ฐพ๊ธฐ → ^(a|b)
. ์—”ํ„ฐ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ํ•œ๊ธ€์ž(์ˆซ์ž, ๋ฌธ์ž, ๊ณต๋ฐฑ, ํŠน์ˆ˜๊ธฐํ˜ธ ํฌํ•จ) ^a.+ → a๋กœ ์‹œ์ž‘ํ•˜๋ฉด์„œ ๋’ค์— ์–ด๋–ค๊ฒŒ ์™€๋„ ์ƒ๊ด€ ์—†์Œ(.+)
+ ์—ฐ์†์ (์—ฌ๋Ÿฌ๊ฐœ)   
[abc] a ๋˜๋Š” b๋˜๋Š” c
- ๋Œ€๊ด„ํ˜ธ ํ•˜๋‚˜๋‹น 'ํ•œ๊ธ€์ž'
^[abc] → a ๋˜๋Š” b๋˜๋Š” c๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฌธ์ž ์ฐพ๊ธฐ
i+
i*
i?
i๊ฐ€ 1ํšŒ ์ด์ƒ ๋ฐ˜๋ณต
i๊ฐ€ 0ํšŒ ์ด์ƒ ๋ฐ˜๋ณต
0ํšŒ์—์„œ 1ํšŒ ๋ฐ˜๋ณต
i๋ฅผ ํฌํ•จํ•œ
i๋ฅผ ๋ฏธํฌํ•จํ•œ
i๋ฅผ ํฌํ•จํ•˜๊ฑฐ๋‚˜, ๋ฏธํฌํ•จ ํ•˜๊ฑฐ๋‚˜
i{n}
i{n1, n2}
i[n, ]
i๊ฐ€ nํšŒ ๋ฐ˜๋ณต
i๊ฐ€ n1์—์„œ nํšŒ ๋ฐ˜๋ณต
i๊ฐ€ nํšŒ ์ด์ƒ ๋ฐ˜๋ณต
b[4] → bbbb
b[2,4] → bb \n bbbb
b[2,] → bb
[:punct:] ํŠน์ˆ˜๋ฌธ์ž  
[:alnum:] ๋ฌธ์ž์™€ ์ˆซ์ž  
[:print:] ์ˆซ์ž, ๋ฌธ์ž, ํŠน์ˆ˜๋ฌธ์ž, ๊ณต๋ฐฑ ๋ชจ๋‘  

3. ์ •๊ทœ์‹ ํ‘œํ˜„ ํ•จ์ˆ˜

1) REGEXP_REPLACE

- ์ •๊ทœ์‹ ํ‘œํ˜„์„ ์‚ฌ์šฉํ•œ(REGEXP_) ๋ฌธ์ž์—ด ์น˜ํ™˜, ์‚ญ์ œ ๊ฐ€๋Šฅ(REPLACE)

- ๋ฌธ๋ฒ•

REGEXP_REPLACE(๋Œ€์ƒ, ์ฐพ์„ ๋ฌธ์ž์—ด, [๋ฐ”๊ฟ€ ๋ฌธ์ž์—ด], [๊ฒ€์ƒ‰ ์œ„์น˜], [๋ฐœ๊ฒฌ ํšŸ์ˆ˜], [์˜ต์…˜])
→ ๋Œ€์ƒ์—์„œ ์–ด๋–ค๊ฑธ ์ฐพ์•„์„œ, ์–ด๋–ป๊ฒŒ ๋ฐ”๊ฟ€๋ž˜, ๋ช‡ ๋ฒˆ์งธ ์œ„์น˜์—์„œ, ๋ช‡ ๋ฒˆ์งธ๋กœ ๋ฐœ๊ฒฌ๋˜๋Š” ๊ฒƒ์„ ์น˜ํ™˜(|์‚ญ์ œ) ํ• ๋ž˜?

- [๋ฐ”๊ฟ€ ๋ฌธ์ž์—ด] : ์ƒ๋žต์‹œ ์‚ญ์ œ
- [๊ฒ€์ƒ‰ ์œ„์น˜] : ์ƒ๋žต์‹œ 1
- [๋ฐœ๊ฒฌ ํšŸ์ˆ˜] : ์ƒ๋žต์‹œ 0(๋ชจ๋“ ๊ฒƒ) 
- [์˜ต์…˜] : 
c(๊ธฐ๋ณธ) → ๋Œ€์†Œ ๊ตฌ๋ถ„ํ•˜์—ฌ ๊ฒ€์ƒ‰
i → ๋Œ€์†Œ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๊ณ  ๊ฒ€์ƒ‰ (= [A-z]) (= [a - zA-Z]
m → ํŒจํ„ด์„ ๋‹ค์ค‘๋ผ์ธ์œผ๋กœ ์„ ์–ธ ๊ฐ€๋Šฅ

 

2) REGEXP_SUBSTR

- ์ •๊ทœ์‹ ํ‘œํ˜„์„ ์‚ฌ์šฉํ•œ(REGEXP_) ๋ฌธ์ž์—ด ์ถ”์ถœ(SUBSTR)

- ๋ฌธ๋ฒ•

REGEXP_SUBSTR(๋Œ€์ƒ, ํŒจํ„ด, [๊ฒ€์ƒ‰ ์œ„์น˜], [๋ฐœ๊ฒฌ ํšŸ์ˆ˜], [์˜ต์…˜], [์ถ”์ถœ ๊ทธ๋ฃน])
→ ๋Œ€์ƒ์„ ์–ด๋–ค ํŒจํ„ด์„ ๊ฐ€์ง€๋กœ ์žˆ๋Š”, ์–ด๋””์—์„œ ๋ถ€ํ„ฐ, ๋ช‡ ๋ฒˆ์งธ๋กœ ๋ฐœ๊ฒฌ๋˜๋Š” [์˜ต์…˜: null] ๊ทธ๋ฃน์„ ์ฐพ์„ ๊บผ์•ผ? 

- [๊ฒ€์ƒ‰ ์œ„์น˜] : ์ƒ๋žต์‹œ 1
- [๋ฐœ๊ฒฌ ํšŸ์ˆ˜] : ์ƒ๋žต์‹œ 1
- [์˜ต์…˜] : REGEXP_REPLACE()์™€ ๋™์ผ
- [์ถ”์ถœ ๊ทธ๋ฃน] : ์„œ๋ธŒ ํŒจํ„ด ๋ฒˆํ˜ธ

 

3) REGEXP_INSTR

- ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์—์„œ ํŠน์ • ํŒจํ„ด์˜ ์‹œ์ž‘ ์œ„์น˜ ๋ฐ˜ํ™˜

- ๋ฌธ๋ฒ•

REGEXP_INSTR(๋Œ€์ƒ, ์ฐพ์„ ํŒจํ„ด, [์‹œ์ž‘ ์œ„์น˜], [๋ฐœ๊ฒฌ ํšŸ์ˆ˜], [์ถœ๋ ฅ ์˜ต์…˜], [์˜ต์…˜], [์ถ”์ถœ ๊ทธ๋ฃน])
→ ๋Œ€์ƒ์—์„œ ์–ด๋–ค ํŒจํ„ด์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์–ด๋””์—์„œ ๋ถ€ํ„ฐ ์‹œ์ž‘ ํ•˜๋Š” ๋ช‡ ๋ฒˆ์งธ๋กœ ๋ฐœ๊ฒฌ๋˜๋Š” [์‹œ์ž‘์œ„์น˜|๋์œ„์น˜] ๊ฐ’ ๋ฐ˜ํ™˜

- [์‹œ์ž‘ ์œ„์น˜] : ์ƒ๋žต์‹œ 1
- [๋ฐœ๊ฒฌ ํšŸ์ˆ˜] : ์ƒ๋žต์‹œ ์ฒ˜์Œ ๋ฐœ๊ฒฌ๋œ ๋ฌธ์ž์—ด ์œ„์น˜ ๋ฆฌํ„ด
- [์ถœ๋ ฅ ์˜ต์…˜] : 
 0(๊ธฐ๋ณธ๊ฐ’) : ๋ฌธ์ž์—ด์˜ ์‹œ์ž‘์œ„์น˜ ๋ฆฌํ„ด
 1 : ๋ฌธ์ž์—ด์˜ ๋์œ„์น˜ ๋ฆฌํ„ด
ex. 12abc34 → abc๋ฅผ ์ฐพ๊ณ  ์‹ถ์„๋•Œ: 0์ด๋ฉด 'a' / 1์ด๋ฉด 'c'๋ฅผ ์ฐพ์Œ

 

 

4) REGEXP_LIKE

- ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์—์„œ ํŠน์ • ํŒจํ„ด์„ ๊ฐ–๋Š” ๊ฒฝ์šฐ ๋ฐ˜ํ™˜

- WHERE์ ˆ ์‚ฌ์šฉ

- ๋ฌธ๋ฒ•

REGEXP_LIKE(๋Œ€์ƒ, ์ฐพ์„ ๋ฌธ์ž์—ด, [์˜ต์…˜])
→ ๋Œ€์ƒ์—์„œ ์–ด๋–ค ๊ฑธ ์ฐพ์„ ๊บผ์•ผ?

- [์˜ต์…˜] : 
REGEXP_REPLACE()์™€ ๋™์ผ

 

5) REGEXP_COUNT

- ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์—์„œ ํŠน์ • ํŒจํ„ด์˜ ํšŸ์ˆ˜ ๋ฐ˜ํ™˜

- ๋ฌธ๋ฒ•

REGEXP_COUNT(๋Œ€์ƒ, ์ฐพ์„ ๋ฌธ์ž์—ด, [์‹œ์ž‘ ์œ„์น˜], [์˜ต์…˜])

- [์‹œ์ž‘ ์œ„์น˜] : ์ƒ๋žต์‹œ 1