概要
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}]
- JSON Pathを指定して要素をセットする。 既存の要素を置換するか、要素の最後に追加することができる。
- 存在しないJSON Pathを指定した場合、何も起こらない
-
JSONオブジェクトで置換したい場合は
json()
などを使い、 JSONオブジェクトを引数にわたすこと。
参考URL
-
The json_insert(), json_replace, and json_set() functions
https://www.sqlite.org/json1.html#the_json_insert_json_replace_and_json_set_functions -
# JSONPath - XPath for JSON
https://goessner.net/articles/JsonPath/