2023年5月2日火曜日

SQLite3 JSONから要素を取得する(json_extract())

概要

json_extract()関数でJSON配列の要素を取得することが出来る。

->->>と異なり 一回で複数のJSON Pathを指定することで、それぞれの結果をまとめて取得することができる。

構文


json_extract(json_string, json_path1, json_path2 ...)
                
引数が1つ(JSON Pathが指定されなかった)場合 nullが取得される
引数が2つ(JSON Pathが1つだけ指定された)場合 JSON Pathで指定された箇所のJSONオブジェクトを取得する
引数が3つ以上(JSON Pathが2つ以上指定された)場合 各JSON Pathで指定された箇所のJSONオブジェクトが格納された配列を取得する

実行例

環境
  • Windows 10 64bit
  • SQLite3 (3.41.2) Command-Line Shell
引数が1つ(JSON Pathが指定されなかった)場合

sqlite> .nullvalue [null]
sqlite> select json_extract('[1,2,3,[4,5]]');
[null]
                    
引数が2つ(JSON Pathが1つだけ指定された)場合

sqlite> select json_extract('[1,2,3,[4,5]]', '$[2]');
3
                    
引数が3つ以上(JSON Pathが2つ以上指定された)場合

sqlite> select json_extract('[1,2,3,[4,5]]', '$[2]', '$[3]');
[3,[4,5]]
sqlite> select json_extract('{
'  ...>         "id":"001"
'  ...>         , "name": "taro"
'  ...>         , "email":[
'  ...>                 "main@example.com"
'  ...>                 , "sub@example.com"
'  ...>                 ]
'  ...>         }'
(x1...>         , '$.id', '$.name', '$.email[0]'
(x1...> );
["001","taro","main@example.com"]
                    

参考URL