- ์นดํ ๊ณ ๋ฆฌ:
๋ฐ์ ํ ๋ฐ ์ ํ ๋ฐ์ดํฐ ํจ์ (๊ตฌ๋ฌธ ๋ถ์)
TRY_PARSE_JSONยถ
๊ตฌ๋ฌธ ๋ถ์ ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด NULL ๊ฐ์ ๋ฐํํ๋ PARSE_JSON ์ ํน์ ๋ฒ์ ์ ๋๋ค.
๊ตฌ๋ฌธยถ
TRY_PARSE_JSON( <expr> [ , '<parameter>' ] )
์ธ์ยถ
ํ์:
expr
์ ํจํ JSON ์ ๋ณด๋ฅผ ๋ณด์ ํ๋ ๋ฌธ์์ด ํ์(์: VARCHAR)์ ์์ ๋๋ค.
์ ํ ์ฌํญ:
'parameter'
์ผ์น ํญ๋ชฉ์ ๊ฒ์ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋งค๊ฐ ๋ณ์๋ฅผ ์ง์ ํ๋ ๋ฌธ์์ด ์์์ ๋๋ค. ์ง์๋๋ ๊ฐ:
๋งค๊ฐ ๋ณ์
์ค๋ช
d
JSON ์ค๋ธ์ ํธ์์ ์ค๋ณต ํค ํ์ฉ. JSON ์ค๋ธ์ ํธ์ ์ค๋ณต ํค๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ ๋ฐํ๋ ์ค๋ธ์ ํธ์๋ ํด๋น ํค์ ๋ํด ์ง์ ๋ ๋ง์ง๋ง ๊ฐ์ ๊ฐ์ง ํด๋น ํค์ ๋จ์ผ ์ธ์คํด์ค๊ฐ ์์ต๋๋ค.
s
JSON ์ค๋ธ์ ํธ์์ ์ค๋ณต ํค ํ์ฉ ์ ํจ(์๊ฒฉ). ์ด ๊ฐ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
๋ฐํยถ
JSON ๋ฌธ์๋ฅผ ํฌํจํ๋ VARIANT ํ์ ์ ๊ฐ์ ๋ฐํํฉ๋๋ค.
์ ๋ ฅ์ด NULL ์ด๊ฑฐ๋ ๊ตฌ๋ฌธ ๋ถ์ ์ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ํจ์๋ NULL ์ ๋ฐํํฉ๋๋ค.
์ด ํจ์๋ ์ ํ ์ ํ ์ ๋ฐํํ์ง ์์ต๋๋ค.
์ฌ์ฉ๋ฒ ๋ ธํธยถ
์ฌ์ฉ๋ฒ ๋ ธํธ๋ PARSE_JSON ์น์ ์ ์ฐธ์กฐํ์ญ์์ค.
์ยถ
๋ค์์ JSON์ผ๋ก ๊ตฌ๋ฌธ ๋ถ์ํ ์ ์๋ ๊ฐ์ด ํฌํจ๋ ๋ฌธ์์ด์ ๊ตฌ๋ฌธ ๋ถ์ํ๊ธฐ ์ํด TRY_PARSE_JSON ์ ํธ์ถํ์ฌ VARIANT ์ด์ ๋ค์ํ ํ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๋ฅผ ๋ณด์ฌ์ค๋๋ค.
ํ ์ด๋ธ์ ๋ง๋ค๊ณ ์ฑ์๋๋ค.
CREATE OR REPLACE TEMPORARY TABLE vartab (ID INTEGER, v VARCHAR);
INSERT INTO vartab (id, v) VALUES
(1, '[-1, 12, 289, 2188, FALSE,]'),
(2, '{ "x" : "abc", "y" : FALSE, "z": 10} '),
(3, '{ "bad" : "json", "missing" : TRUE, "close_brace": 10 ');
TRY_PARSE_JSON ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฟผ๋ฆฌํฉ๋๋ค. ์ธ ๋ฒ์งธ ์ค์ ๊ฐ์ NULL์ ๋๋ค. ์ฟผ๋ฆฌ๊ฐ TRY_PARSE_JSON ๋์ PARSE_JSON ์ ์ฌ์ฉํ๋ฉด ์คํจํ๊ฒ ๋ฉ๋๋ค.
SELECT ID, TRY_PARSE_JSON(v)
FROM vartab
ORDER BY ID;
+----+-------------------+
| ID | TRY_PARSE_JSON(V) |
|----+-------------------|
| 1 | [ |
| | -1, |
| | 12, |
| | 289, |
| | 2188, |
| | false, |
| | undefined |
| | ] |
| 2 | { |
| | "x": "abc", |
| | "y": false, |
| | "z": 10 |
| | } |
| 3 | NULL |
+----+-------------------+
์์ธํ ์์ ๋ PARSE_JSON ์น์ ์ ์ฐธ์กฐํ์ญ์์ค.