2023年4月10日月曜日

SQLite3 JSON配列の要素数を取得する(json_array_length())

概要

json_array_length関数でJSON配列の要素数を取得することが出来る。 なお、取得できるのは配列だけで連想配列の要素数は取得できない。

環境

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

構文


json_array_length(json_string)
json_array_length(json_string, json_path)
                

実行例


sqlite> -- # 1.
sqlite> select json_array_length('[1,2,3,4]');
4
sqlite> select json_array_length('["a", "b", "c"]');
3

sqlite> -- # 2.
sqlite> select json_array_length('
'  ...>      {
'  ...>         "a": 100
'  ...>          ,"b": 200
'  ...>          ,"c": 300
'  ...>          ,"d": 400
'  ...>      }
'  ...> ');
0

sqlite> -- # 3.
sqlite> select json_array_length('
'  ...>     [
'  ...>         1
'  ...>         , [2,3]
'  ...>         , 4
'  ...>     ]
'  ...> ');
3
                
  1. JSONの配列の要素数を取得する
  2. 連想配列の要素数は取得出来ない
  3. JSON Pathを指定しないと最上位の要素数を返す

sqlite> .nullvalue [null]
sqlite> select json_array_length('[1,2,3,4]', '$');
4
sqlite> select json_array_length('[1,2,3,4]', '$[2]');
0

sqlite> -- # 2.
sqlite> select json_array_length('
'  ...>     {
'  ...>          "a": 100
'  ...>          , "b": [ 200, 300 ]
'  ...>          , "c": 400
'  ...>      }
'  ...> ', '$.b');
2

sqlite> -- # 3.
sqlite> select json_array_length('
'  ...>      {
'  ...>          "a": 100
'  ...>          , "b": [ 200, 300 ]
'  ...>          , "c": 400
'  ...>      }
'  ...> ', '$.d');
[null]

sqlite> -- # 4.
sqlite> select json_array_length('
'  ...>      {
'  ...>          "a": 100
'  ...>          , "b": [ 200, 300 ]
'  ...>          , "c": {
'  ...>              "d": 400
'  ...>              , "e": 500
'  ...>          }
'  ...>      }
'  ...> ', '$.c');
0
                
  1. JSON Pathで指定した要素の要素数を取得する
  2. JSON Pathで指定すると連想配列内の配列の要素数を取得出来る
  3. JSON Pathで指定した要素がない場合、NULLが返される
  4. JSON Pathで指定しても連想配列の要素数は取得出来ない

参考URL