やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

SQLite3学習 JSON拡張(json_array_length)

 JSON配列の長さを返す。

成果物

JSON配列→長さ

 ターミナルで以下コマンドを実行する。

sqlite3

 対話モードにて以下コマンドをコピペし実行。

create table users(id int primary key, json text);
insert into users values(111, '[1,2]');
insert into users values(222, '["A","B","C"]');
insert into users values(333, '[]');
.headers on
.mode column
select json_array_length(name) from users;
json_array_length(json)
-----------------------
2                      
3                      
0                      

行→JSON配列→長さ

create table users(id int primary key, name text);
insert into users values(111, 'yamada');
insert into users values(222, 'suzuki');
insert into users values(333, 'tanaka');
.headers on
.mode column
select json_group_array(name) from users;
select json_array_length(json_group_array(name)) from users;
json_group_array(name)      
----------------------------
["yamada","suzuki","tanaka"]
json_array_length(json_group_array(name))
-----------------------------------------
3      

JSONパス

create table users(id int primary key, json text);
insert into users values(111, '{"list": [1,2]}');
insert into users values(222, '{"list": ["A","B","C"]}');
insert into users values(333, '{"list": []}');
.headers on
.mode column
select json_array_length(json, '$.list') from users;
json_array_length(json, '$.list')
---------------------------------
2                                
3                                
0                                

 第二引数にJSONパスを指定できる。

所感

 オブジェクトのキー数を取得する関数はない。配列の場合は個数がインデックス上限になりキーを特定できる重要なものだから?

 でも、それならオブジェクトのキー一覧関数があってもいいような? keys(), has_key()とか。ないんだよ。

情報源

対象環境

$ uname -a
Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux

前回まで