2023年7月15日土曜日

SQLite3 JSONの要素を置換、もしくは最後に挿入する(json_set())

概要

SQLiteでJSONオブジェクトに要素を置換する方法はいくつかある。 ここではjson_setについて記載する。

構文


json_set(JSON_OBJECT, JSON_PATH, INERT_OBJECT)
                

実行例

環境
  • Windows 10 64bit
  • SQLite3 (3.41.2) Command-Line Shell


.log stderr
sqlite> -- # 1.
sqlite> select json_set('[1,2]', '$[#]', 10);
[1,2,10]
sqlite> select json_set('[1,2]', '$[0]', 10);
[10,2]
sqlite> select json_set('[1,2]', '$[1]', 10);
[1,10]

sqlite> -- # 2.
sqlite> select json_set('[1,2]', '$[5]', 10);
[1,2]

sqlite> -- # 3.
sqlite> select json_set('[1,2]', '$[#]', '{"A":100}');
[1,2,"{\"A\":100}"]
sqlite> select json_set('[1,2]', '$[#]', json('{"A":100}'));
[1,2,{"A":100}]
                
  1. JSON Pathを指定して要素をセットする。 既存の要素を置換するか、要素の最後に追加することができる。
  2. 存在しないJSON Pathを指定した場合、何も起こらない
  3. JSONオブジェクトで置換したい場合はjson()などを使い、 JSONオブジェクトを引数にわたすこと。

参考URL