๊ตฌ๋ถ์ ํฌํจ ๊ฐ์ ํ์ผ๋ก ๋ถ๋ฆฌํด๋ณด์.
10.1 ์ด์ ๋ฒ์ ๊น์ง๋ ์๋์ ๊ฐ์ด SUBSTR ํจ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
-- 1 WITH w1 AS (SELECT 'A,BB,CCC,DDDD,EEEEE' AS c1 FROM DUAL) SELECT c1, SUBSTR (c1_n , INSTR (c1_n, ',', 1, LEVEL) + 1 , INSTR (c1_n, ',', 1, LEVEL + 1) - INSTR (c1_n, ',', 1, LEVEL) - 1) AS c1_n FROM (SELECT c1, ',' || c1 || ',' AS c1_n FROM w1) CONNECT BY LEVEL <= LENGTH (c1_n) - LENGTH (REPLACE (c1_n, ',')) - 1; C1 C1_N ------------------- ----- A,BB,CCC,DDDD,EEEEE A A,BB,CCC,DDDD,EEEEE BB A,BB,CCC,DDDD,EEEEE CCC A,BB,CCC,DDDD,EEEEE DDDD A,BB,CCC,DDDD,EEEEE EEEEE 5 ํ์ด ์ ํ๋์์ต๋๋ค.
11.1 ๋ฒ์ ๋ถํฐ ์๋์ ๊ฐ์ด ์ ๊ท ํํ์ ํจ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
WITH w1 AS (SELECT 'A,BB,CCC,DDDD,EEEEE' AS c1 FROM DUAL) SELECT c1, REGEXP_SUBSTR (c1, '[^,]+', 1, LEVEL) AS c1_n FROM w1 CONNECT BY LEVEL <= REGEXP_COUNT (c1, ',') + 1; C1 C1_N ------------------- ----- A,BB,CCC,DDDD,EEEEE A A,BB,CCC,DDDD,EEEEE BB A,BB,CCC,DDDD,EEEEE CCC A,BB,CCC,DDDD,EEEEE DDDD A,BB,CCC,DDDD,EEEEE EEEEE 5 ํ์ด ์ ํ๋์์ต๋๋ค.
๋ฌธ์์ด์ ํฌํจ๋ ๊ตฌ๋ถ์์ ๊ฐ์๋ ์๋์ ๋ฐฉ์์ผ๋ก ๊ณ์ฐํ ์ ์๋ค.
WITH w1 AS (SELECT 'A,BB,CCC,DDDD,EEEEE' AS c1 FROM DUAL) SELECT c1 , LENGTH (c1) - LENGTH (REPLACE (c1, ',')) AS c2 , LENGTH (TRANSLATE (c1, ',' || c1, ',')) AS c3 , REGEXP_COUNT (c1, ',') AS c4 FROM w1; C1 C2 C3 C4 ------------------- -- -- -- A,BB,CCC,DDDD,EEEEE 4 4 4 1๊ฐ์ ํ์ด ์ ํ๋์์ต๋๋ค.
'Oracle > SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ ๋ง์คํน (0) | 2012.04.30 |
---|---|
๋ค์ค ํ์ ๋ฌธ์์ด๋ก ์ง๊ณ (0) | 2012.04.16 |
์ฐ์๋ ๊ณต๋ฐฑ์ ํ๋์ ๊ณต๋ฐฑ์ผ๋ก ๋ณ๊ฒฝ (0) | 2012.04.12 |
์ฐ์ ์์น ๊ตฌ๊ฐ ์กฐํ (0) | 2012.04.10 |
์ ์ด๋ ฅ์ ์ ๋ถ ์ด๋ ฅ์ผ๋ก ์ ํ (0) | 2012.04.09 |