LoginSignup
0
0

More than 1 year has passed since last update.

SELECTした結果をJSON文字列にして保存する

Last updated at Posted at 2021-06-07

概要

SELECTした結果をJSON文字列にして他のテーブルに保存する必要がありました。
そのため、調べたことをメモしておく。

SELECT結果をJSON文字列にする

JSON_OBJECT 関数を使ったら、サクッと作れた。

test.sql
-- hoge_logsテーブルにhogeテーブルの一部データをINSERTする
INSERT INTO `hoge_logs` (`status`, `hoge_id`, `json`)
SELECT 
    'error' AS `status`,
    `id` AS `hoge_id`,
    JSON_OBJECT(
        'id', `id`, 
        'code', `code`, 
        'name', `name`
    ) AS `json`
FROM
    `hoge` 
WHERE
    `hoge` = '1'
;

こんな感じ...

何かしらの処理に失敗したデータを簡易にJSON文字列にしてログ出力しておくには便利かも♪。
※ スクリプトが使えず、SQLで処理する必要がある場合にしか使わないだろうけど...

JSON文字列を展開する

逆に、保存したJSON文字列を再展開したい場合はどうするんだろうと思い調べる。
JSON_EXTRACTJSON_UNQUOTEを使ったらできそうです。

SELECT
    JSON_UNQUOTE(JSON_EXTRACT(`data_json`, '$.id')) AS `id`,
    JSON_UNQUOTE(JSON_EXTRACT(`data_json`, '$.code')) AS `code`,
    JSON_UNQUOTE(JSON_EXTRACT(`data_json`, '$.name')) AS `name`
FROM 
    `hoge_logs`
WHERE
    `hoge_id` = '1'
;

結構、JSON文字列を扱う関数が合っていろいろできるんですね。

参考サイト

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0