๐ ์ค๋ผํด JSON ๋ณํ ์๋ฒฝ ๊ฐ์ด๋
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ค๋ฃจ๋ค ๋ณด๋ฉด JSON ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์์ผ ํ ๋๊ฐ ๋ง์ต๋๋ค. ํนํ ์ค๋ผํด(Oracle Database)์์๋ SQL๊ณผ PL/SQL์์ JSON์ ๋ค๋ฃฐ ์ ์๋ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ์๋๋ฐ์, ์ค๋์ SQL ๊ฒฐ๊ณผ๋ฅผ JSON์ผ๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ๊ณผ JSON ๋ฐ์ดํฐ๋ฅผ SQL์์ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด ๋ณด๊ฒ ์ต๋๋ค. ๐
โ 1. SQL ๊ฒฐ๊ณผ๋ฅผ JSON์ผ๋ก ๋ณํํ๊ธฐ
1-1. ๋จ์ผ ํ โ JSON ๊ฐ์ฒด (JSON_OBJECT
)
์๋ฅผ ๋ค์ด ์ฌ์ ํ
์ด๋ธ(emp
)์์ ํน์ ์ฌ์์ ์ ๋ณด๋ฅผ JSON์ผ๋ก ๋ณด๊ณ ์ถ๋ค๋ฉด:
SELECT JSON_OBJECT(
'empno' VALUE empno,
'ename' VALUE ename,
'job' VALUE job
) AS emp_json
FROM emp
WHERE empno = 7369;
๊ฒฐ๊ณผ
{"empno":7369,"ename":"SMITH","job":"CLERK"}
1-2. ๋ค์ค ํ โ JSON ๋ฐฐ์ด (JSON_ARRAYAGG
+ JSON_OBJECT
)
์ฌ๋ฌ ํ์ ํ ๋ฒ์ JSON ๋ฐฐ์ด๋ก ๋ฌถ์ ์๋ ์์ต๋๋ค.
SELECT JSON_ARRAYAGG(
JSON_OBJECT(
'empno' VALUE empno,
'ename' VALUE ename,
'job' VALUE job
)
) AS emp_list
FROM emp;
๊ฒฐ๊ณผ
[
{"empno":7369,"ename":"SMITH","job":"CLERK"},
{"empno":7499,"ename":"ALLEN","job":"SALESMAN"}
]
1-3. Key-Value ๊ตฌ์กฐ๋ก ๋ณํ (JSON_OBJECTAGG
)
SELECT JSON_OBJECTAGG(
ename VALUE job
) AS emp_map
FROM emp;
๊ฒฐ๊ณผ
{"SMITH":"CLERK","ALLEN":"SALESMAN"}
โ 2. JSON ๋ฐ์ดํฐ๋ฅผ SQL์์ ํ์ฉํ๊ธฐ
2-1. ํน์ ํ๋ ์ถ์ถ (JSON_VALUE
)
SELECT JSON_VALUE('{"empno":7369,"ename":"SMITH"}', '$.ename') AS name
FROM dual;
๊ฒฐ๊ณผ
SMITH
2-2. JSON ๋ฐฐ์ด โ ํ
์ด๋ธ ๋ณํ (JSON_TABLE
)
SELECT jt.empno, jt.ename
FROM JSON_TABLE(
'[{"empno":7369,"ename":"SMITH"},
{"empno":7499,"ename":"ALLEN"}]',
'$[*]' COLUMNS (
empno NUMBER PATH '$.empno',
ename VARCHAR2(20) PATH '$.ename'
)
) jt;
๊ฒฐ๊ณผ
EMPNO | ENAME |
---|---|
7369 | SMITH |
7499 | ALLEN |
โ 3. PL/SQL์์ JSON์ผ๋ก ๋ด๋ณด๋ด๊ธฐ
DECLARE
v_json CLOB;
BEGIN
SELECT JSON_ARRAYAGG(
JSON_OBJECT(
'empno' VALUE empno,
'ename' VALUE ename
)
)
INTO v_json
FROM emp;
DBMS_OUTPUT.PUT_LINE(v_json);
END;
๐ ๋ง๋ฌด๋ฆฌ
์ ๋ฆฌํ๋ฉด,
- SQL ๊ฒฐ๊ณผ๋ฅผ JSON์ผ๋ก ๋ณํํ ๋
โJSON_OBJECT
,JSON_ARRAYAGG
,JSON_OBJECTAGG
- JSON ๋ฐ์ดํฐ๋ฅผ SQL์์ ํ์ฉํ ๋
โJSON_VALUE
,JSON_TABLE
์ค๋ผํด์ JSON ๊ธฐ๋ฅ์ ํ์ฉํ๋ฉด REST API ์ฐ๋์ด๋ ์ธ๋ถ ์์คํ ๊ณผ์ ๋ฐ์ดํฐ ๊ตํ์ด ํจ์ฌ ์์ํด์ง๋ค๋ ์ , ๊ผญ ๊ธฐ์ตํด ๋์ธ์! ๐ก
'ORACLE' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ค๋ผํด CASE๋ฌธ ์์ SELECT๋ฌธ์ ๋ฃ์ผ๋ฉด ์ค๋ฅ๊ฐ ๋๋ ์ด์ (4) | 2025.07.31 |
---|---|
์ค๋ผํด ๋ณ๋ ฌ์ฒ๋ฆฌ Parallel Processing (0) | 2021.01.23 |
ORACLE ์ ์ ๋ณ ํ ์ด๋ธ ๋น๊ต (0) | 2021.01.23 |
PLSQL DEVELOPER ํ๊ฒฝ์ค์ (0) | 2020.05.20 |
[ORALCE] GREATEST, LEAST (0) | 2019.03.08 |