๊ฐ์์ ๋์๋ฝ,,,๐
๊ฐ์๋น ๋ด๋ฆฐ ๋ค๋ก ๋ ์จ๊ฐ ์ ๋ฒ ์์ํด์ก๋ค.
์ฐฌ๋ฐ๋์ด ์ท์๋ฝ ์ฌ์ด๋ก ํ๊ณ ๋ค์ด์
์ท๊น์ ์ฌ๋ฏธ๊ฒ ๋๋ ๊ทธ๋ฐ ๋ ์จ์๋ค....
๊ฒจ์ธ์ด ์ฑํผ ๋ค๊ฐ์ค๋ ๊ฒ ๊ฐ๋ค.๐งฆ
์ฌ๋๋ค์ ๋จธ๋ฆฌ์๋ก ๋๋ฐ์ด ํฌ๊ทผํ๊ฒ ํฉ๋ ๋ฆฌ๋ ๊ฒจ์ธ๋ ์ด ๊ธฐ๋ค๋ ค์ง๋ค ><
๋นจ๋ฆฌ ๋์ด ๋ด๋ ธ์ผ๋ฉด ์ข๊ฒ ๋ค.....ใ ใ ใ ใ
2024.11.17
์ค๋์ SQLD๋ณด๊ณ ์จ ๋
์ํ ๋ฌธ์ ๋ ๋ฌด๋ํ๊ฒ ๋์๋ค.
์์๋ ๋งค์ฐ ์ฌ์ ๊ณ ๋ค๋ก ๊ฐ์๋ก ์ด๋ ค์์ก๋ค.
์ค์ ์ฟผ๋ฆฌ๋ฌธ ๋ณด๋ ๊ฑด ์์ ์์์ง๋ง
๊ฑฑ์ ํ๋ ๋ถ๋ถ์ ์ด๋ก ๊ณผ๋ชฉ์ธ 1๊ณผ๋ชฉ์ด์๋ค.
10๋ฌธ์ ๋ฐ์ ์๋๋๋ฐ ๋ํดํด์ ๊ณผ๋ฝ ๊ฑฑ์ ์ด ์์๋๋ฐ
์ด๋ฒ์๋ ์ ๋ง ์ฝ๊ฒ ๋์๋ค.
์ด๋ ค์ ๋๊ฑฐ ๋๋ฌธ์ ๋ ํท๊ฐ๋ฆฐ๊ฑฐ ํ ๋ฌธ์ ์๋ ์ ๋ฆฌํด ๋ณธ๋ค.
๋จผ์ , ์ ๊ทํํ์ ๋ฌธ์ ๋๋ ์ด๋ ค์ ๋ค......
`REGEXP_INSTR()`
๋ณด๊ธฐ๊ฐ 4, 56, 78, 123 ์ด์๋๋ฐ ๊ทธ๋ฅ 56์ผ๋ก ์ฐ์๋ค.
์ํ ๋๋๊ณ ๊ฒ์ ํด ๋ณด๋๊น ์ ๊ท์๊ณผ ์ผ์นํ๋ ๋ถ๋ถ์ ๋ฌธ์์ด์ ์์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํ๋ ํจ์๋ผ๊ณ ํ๋ค.
์ฝ๊ฒ ๋์์ผ๋ฉด ์ด๋ป๊ฒ๋ ํ์ด๋ณด๋ ค๊ณ ํ์ํ ๋ฐ ํ๋ ธ๋ค ^^v
REGEXP_INSTR('1234567890', '(123)((4,5)6)789', 1, 1, 0, 'i', 2)
๋ฌธ์์ด: '1234567890'
์ ๊ท ํํ์: (123)((4,5)6)789
์ฒซ ๋ฒ์งธ ์บก์ฒ ๊ทธ๋ฃน: (123) → 123
๋ ๋ฒ์งธ ์บก์ฒ ๊ทธ๋ฃน: ((4,5)6) → 56 (์ ๊ท์์์ (4,5)๋ 4 ๋๋ 5๋ฅผ ์๋ฏธํ๊ณ ๊ทธ ๋ค์ 6์ด ์จ๋ค)
ํ๋ผ๋ฏธํฐ:
1: ์์ ์์น
1: ์ฒซ ๋ฒ์งธ ์ผ์น ํญ๋ชฉ์ ์ฐพ์
0: ์์ ์์น๋ฅผ ๋ฐํ'i': ๋์๋ฌธ์ ๊ตฌ๋ถ ์์ (ํ์ง๋ง ์ฌ๊ธฐ์๋ ํ์ ์์)
2: ๋ ๋ฒ์งธ ์บก์ฒ ๊ทธ๋ฃน ๋ฐํ
๊ฒฐ๊ณผ:
REGEXP_INSTR ํจ์๋ ๋ ๋ฒ์งธ ์บก์ฒ ๊ทธ๋ฃน (4,5)6์์ 56์ ์ฐพ๊ณ , ๊ทธ ์์ ์์น์ธ 4๋ฅผ ๋ฐํ
๊ทธ๋ฆฌ๊ณ 36๋ฒ ROLLUP / GROUPING SET๋ฌธ์ ๋ก 25๋ถ ๋์ ๊ณ ๋ฏผํ๋ค.
์๋ 11์์ ๋์ฌ ์ ์์๋๋ฐ ์ด๊ฑธ๋ก ๊ณ ๋ฏผํ๋ค๊ฐ ๋ต์์ง๋ ๋ฐ๊พธ๊ณ ์ํ ๋๋ ์๊ฐ ๋ค ์ฑ์ฐ๊ณ ๋์์คใ ใ
๋ณด๊ธฐ ์ค์์ ํ๋ฆฐ๊ฑฐ ๊ณ ๋ฅด๋ผ๋๋ฐ ๊ฒฐ๊ณผ๊ฐ์ด 1๋ฒ 4๋ฒ ๊ฐ๊ณ 2๋ฒ 3๋ฒ์ด ๋น์ทํ๋ค ใ ใ ใ ๋ฌดํผ...??
๋งค์ถ ๋ ์ง๋ณ ์๋ฃ ํ๋งค๋ ํ ์ด๋ธ
๋ ์ง / ? / ์ํ์ฝ๋(10001-10003)/ ํ๋งค์ฌ์?(AABBCC) / ๋งค์ถ์ก(์ฟผ๋ฆฌ์์SUM)
์ํ์ฝ๋๋ ํ๋งค์ฌ์์ด์๋? ์ด ๋ ์ปฌ๋ผ์ผ๋ก ORDER BY์ ์ GROUPING SET, ROLLUP ํ๋ ๊ฑฐ์๋ค.
ROLLUP์ ์ด์ ๊ทธ๋ฃนํํ์ง ์๊ณ ์ ์ฒด ๊ฒฐ๊ณผ ์งํฉ์ด ์๋ ํ์ ๋ฐํ
GROUP BY ROLLUP((a), (b))๋ GROUP BY GROUPING SETS((a,b), (a), ())์ ๊ฐ์.
๋ณด๊ธฐ
1. ์ํํ๋งค์ฌ์, ROLLUP(์ํ์ฝ๋)
2. ROLLUP(์ํํ๋งค์ฌ์, ์ํ์ฝ๋)
3. GROUPING SET((์ํํ๋งค์ฌ์, ์ํ์ฝ๋),์ํํ๋งค์ฌ์))
4. ์ํํ๋งค์ฌ์ GROUPING SET(์ํ์ฝ๋, ())
1,4๋ `์ํํ๋งค์ฌ์`, `์ํ์ฝ๋`, `์ํ์ฝ๋์ดํฉ`
2๋ `์ํํ๋งค์ฌ์ + ์ํ์ฝ๋`, `์ํํ๋งค์ฌ์`, `์ ์ฒดํฉ๊ณ`
3์ `์ํํ๋งค์ฌ์ + ์ํ์ฝ๋`, `์ํํ๋งค์ฌ์`
์ ํํ ๋ฌธ์ ๊ฐ ๊ธฐ์ต์ด ์๋์ ๋ชจ๋ฅด๊ฒ ์คใ ใ
NOT EXIST ๊ด๋ จ
NOT IN์์๋ SELECT ์ ์ 1์ ์ฌ์ฉํ ์ ์๋ค. NOT IN์ ์ค์ ๊ฐ์ ๋น๊ตํ๊ธฐ ๋๋ฌธ์ SELECT ์ ์ ๋น๊ตํ ๊ฐ์ ์ ํํ ๋ช ์ํด์ผ ํ๋ค. ๋ฐ๋ฉด NOT EXIST์ SELECT ์ ์๋ ๊ด์ฉ์ ์ผ๋ก 1์ ์ด๋ค. ์๋ธ์ฟผ๋ฆฌ์์ ๋ฐํ๋๋ ๊ฐ์ NOT EXISTS์ ๋ณธ์ง์ ๋์์ธ "๊ฒฐ๊ณผ์ ์กด์ฌ ์ฌ๋ถ"๋ง ํ์ธํ๊ธฐ ๋๋ฌธ์, ์ผ๋ฐ์ ์ผ๋ก๋ 1, *, ๋๋ NULL ๊ฐ์ ์์๋ ๋จ์ ๊ฐ์ ์ฐ๋ ๊ฒ์ด ๊ด์ต์ด๋ค.
SELECT *
FROM main_table m
WHERE NOT EXISTS (
SELECT 1
FROM sub_table s
WHERE s.key = m.key
);
SELECT *
FROM main_table m
WHERE m.key NOT IN (
SELECT s.key
FROM sub_table s
);
์กฐํ ํ ๋ ์ปฌ๋ผ๋ช = NULL ๋ฌธ์ ๋ ๋์๋ค
NULL๊ณผ์ ์ฐ์ฐ์ NULL ๋ฐํํ๋ค :)
= ๋ ์ฐ์ฐ์์ด๊ธฐ ๋๋ฌธ์ ์ฐ์ฐํ ๊ฒ์ด๋ค.
์์ผ๋์นด๋ VS ์ ๊ท์ ๋ฉํ๋ฌธ์
SELECT REGEXP_SUBSTR('bacd', 'b*c') AS extracted;
// bc ๋ฐํ
b*c ์ ๊ท ํํ์์ b๋ก ์์ํ๊ณ , c๋ก ๋๋๋ ๋ฌธ์์ด์ ์ฐพ๋๋ค. *๋ 0๊ฐ ์ด์์ ๋ฌธ์๋ฅผ ์๋ฏธํ๋ฏ๋ก, b์ c ์ฌ์ด์ ์๋ฌด ๋ฌธ์๊ฐ ์๊ฑฐ๋ ์ฌ๋ฌ ๋ฌธ์๊ฐ ์์ ์ ์๋ค. ๋ฌธ์์ด 'bacd'์์ b*c ํจํด์ ์ฐพ์ผ๋ฉด ์ฒซ ๋ฒ์งธ b๊ฐ ์๊ณ ๊ทธ ๋ค์ a๊ฐ ์์ผ๋ฉฐ, ๋ง์ง๋ง์ผ๋ก c๊ฐ ๋์ค๊ธฐ ๋๋ฌธ์ bc ๋ถ๋ถ์ด ๋งค์นญ๋๋ค.
SELECT REGEXP_SUBSTR('bacd', 'b%*c') AS extracted;
// NULL ๋ฐํ
SQL์์`%`๋ "0๊ฐ ์ด์์ ๋ฌธ์"๋ฅผ ์๋ฏธํ๋ ์์ผ๋์นด๋์ด๋ค. ์ฃผ๋ก LIKE ์ฟผ๋ฆฌ์์ ์ฌ์ฉ๋๋ค. `*`๋ ์ ๊ท ํํ์์์ "0๊ฐ ์ด์์ ๋ฌธ์"๋ฅผ ์๋ฏธํ๋ ๋ฉํ๋ฌธ์์ด๋ค. ๋ฐ๋ผ์ `b%*c`๋ SQL ์์ผ๋์นด๋(%)์ ์ ๊ท ํํ์ ๋ฉํ๋ฌธ์(*)๊ฐ ํผํฉ๋์ด ์๊ธฐ ๋๋ฌธ์, ์ ๊ท ํํ์ ๋ฌธ๋ฒ์ ๋ง์ง ์์์ NULL๊ฐ์ ๋ฐํํ๋ค
'Diary' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
24/12/03 ๊ธฐ์ตํ์ง ์์ ์ญ์ฌ๋ ๋ํ์ด๋๋ค. (51) | 2024.12.04 |
---|---|
๋ฏธ๋ฆฌ์บ๋ฒ์ค๋ก ๋ธ๋ก๊ทธ ์ธ๋ค์ผ ๋ง๋ค๊ธฐ ์ฌ๋ฐ๋ค >< (21) | 2024.11.10 |
๐์์ฆ ์ ๋ฃ๋ ๋ ธ๋๋ค๐ (4) | 2024.11.01 |
24/11/1 (7) | 2024.11.01 |
โจ๋ฆฌ๋ ์ค๋ง์คํฐ 2๊ธ ์ทจ๋ ํ๊ธฐ (์ํ ๋ฐฉ์, ๊ณต๋ถ ๋ฐฉ๋ฒ, ๋์ด๋ ๋ฑ)โจ (4) | 2024.10.25 |