DB์์ varchar๋ก ์ ์ฅ๋ json String์ ๋ํด ํ๊ธ์ธ ๊ฒฝ์ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํด์ผ ํ๋ค. ๋ค๋ง, ํ๊ธ์ด์ด๋ ์๊ด์๋ ํค์ ํ๊ธ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ด ์์ฌ์๊ธฐ ๋๋ฌธ์, ์ด๋ฅผ ์ ์ธํ๋ ๊ฒ์ด ์ค์ํ๋ค
์์ฑ๋ ์ฟผ๋ฆฌ :
WITH W1 AS (
-- 1. ๋ณธ ํ
์ด๋ธ์์ ํ๊ธ์ด ํฌํจ๋ ๋ชจ๋ ๋ฐ์ดํฐ ์กฐํ
SELECT
sequence,
content
FROM
board b
WHERE
b.content RLIKE '[๊ฐ-ํฃ]'
),
W2 AS (
SELECT
sequence,
REGEXP_SUBSTR(
b.content
-- ํจํด: "key":" ๋ค์ ์ค๋ฉฐ, ํ๊ธ์ ํฌํจํ๊ณ , ๋ซ๋ ๋ฐ์ดํ ์ง์ ๊น์ง์ ๋ด์ฉ์ ์บก์ฒ
'(?<="key":")([^"]*[๊ฐ-ํฃ]+[^"]*)'
) AS Extracted_Korean_Content,
b.content
FROM
board b
WHERE
-- content์ "key" ์์ฑ ๊ฐ ์ค ํ๊ธ์ด ํฌํจ๋ ๋ธ๋ก์ด ์๋ ํ์ ์กฐํ
b.content NOT REGEXP '("key1":"|"key2":"|"key3":"|"key4":")[^"]*[๊ฐ-ํฃ]+'
)
SELECT
W1.*, W2.Extracted_Korean_Content
FROM W1 INNER JOIN W2 ON W1.sequence = W2.sequence
ORDER BY W1.sequence DESC
*REGXP_SUBSTR() ๋ฉ์๋์์ ํจํด์ด ์๋ ๊ฐ์ ์ถ์ถํ๋ค
W1 ํ ์ด๋ธ์ ํ๊ธ์ด ํฌํจ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ณ ,
W2 ํ ์ด๋ธ์์ ํน์ ํค ๋ค์ ํ๊ธ์ด ์ค๋ ๊ฒฝ์ฐ๋ฅผ ์ ์ธ ํ ํ
์ด๋ ์กฐ์ธ์ ํตํด ๋ด๊ฐ ์ํ๋ ํค์ ํ๊ธ์ด ์๋ ๊ฒฝ์ฐ๋ง ์ถ์ถํ ์ ์๋ค
'TIL, WIL > TIL๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| 11.25 TIL : Mybatis ์กฐ๊ฑด๋ฌธ ๊ด๋ จ (0) | 2025.11.25 |
|---|---|
| 09. 25 TIL : Gson ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ JsonObject ๊ฐ์ฒด ํ์ฉ ์ ์ฃผ์ํ ์ (0) | 2025.09.25 |
| 07. 03 TIL : @Configuration ํด๋์ค (1) | 2025.07.03 |
| 04. 29 TIL : SQL ์ฟผ๋ฆฌ์์ CASE ๋ฌธ์ ์ค๋ณต ์ฌ์ฉ (0) | 2025.04.29 |
| 04. 06 TIL : ์ธํฐ๋ท/ ์ ์ก ๊ณ์ธต(IP, TCP, UDP) (0) | 2025.04.06 |