2023年7月3日月曜日

SQLite3 JSONに要素を追加する(json_insert())

概要

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

構文


json_insert(JSON_OBJECT, JSON_PATH, INERT_OBJECT)
                

実行例

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

配列の最後に要素を追加する。
配列の最後以外の場所に要素を追加することは出来ず、 追加出来なかった場合、エラーが出力されない。


sqlite> .log stderr
sqlite> -- # 1.
sqlite> select json_insert('[1,2]', '$[#]', 10);
[1,2,10]
sqlite> select json_insert('[1,2]', '$[2]', 10);
[1,2,10]
sqlite> select json_insert('[1,2]', '$[#]', 'text');
[1,2,"text"]

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

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

sqlite> -- # 4.
sqlite> select json_insert('[1,2]', '$[#]', '{"A":100}');
[1,2,"{\"A\":100}"]
sqlite> select json_insert('[1,2]', '$[#]', json('{"A":100}'));
[1,2,{"A":100}]

                
  1. 配列の最後に要素を追加する
  2. 特定の位置に挿入したり置換したりすることは出来ない
  3. 存在しないパスを指定しても何も起きない
  4. JSONオブジェクトを挿入したい場合はjson()などを使い、 JSONオブジェクトを引数にわたすこと。

参考URL