์นดํ…Œ๊ณ ๋ฆฌ:

๋ฐ˜์ •ํ˜• ๋ฐ ์ •ํ˜• ๋ฐ์ดํ„ฐ ํ•จ์ˆ˜ (๊ตฌ๋ฌธ ๋ถ„์„)

TRY_PARSE_JSONยถ

๊ตฌ๋ฌธ ๋ถ„์„ ์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด NULL ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” PARSE_JSON ์˜ ํŠน์ˆ˜ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.

๊ตฌ๋ฌธยถ

TRY_PARSE_JSON( <expr> [ , '<parameter>' ] )
Copy

์ธ์žยถ

ํ•„์ˆ˜:

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 ');
Copy

TRY_PARSE_JSON ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฟผ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์„ธ ๋ฒˆ์งธ ์ค„์˜ ๊ฐ’์€ NULL์ž…๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ๊ฐ€ TRY_PARSE_JSON ๋Œ€์‹  PARSE_JSON ์„ ์‚ฌ์šฉํ•˜๋ฉด ์‹คํŒจํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

SELECT ID, TRY_PARSE_JSON(v)
  FROM vartab
  ORDER BY ID;
Copy
+----+-------------------+
| ID | TRY_PARSE_JSON(V) |
|----+-------------------|
|  1 | [                 |
|    |   -1,             |
|    |   12,             |
|    |   289,            |
|    |   2188,           |
|    |   false,          |
|    |   undefined       |
|    | ]                 |
|  2 | {                 |
|    |   "x": "abc",     |
|    |   "y": false,     |
|    |   "z": 10         |
|    | }                 |
|  3 | NULL              |
+----+-------------------+

์ž์„ธํ•œ ์˜ˆ์ œ๋Š” PARSE_JSON ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.