所以,这是如何使用json_extract
的第一个例子。首先,数据以稍微不同的方式插入:
insert into user (name, phone) values("oz", json('{"cell":"+491765", "home":"+498973"}'));
现在,我们可以像普通的 SQL 一样选择所有用户的电话号码:
sqlite> select user.phone from user where user.name=='oz';
{"cell":"+491765","home":"+498973"}
sqlite>
但是,如果我们不关心传统的电话线路,只想要移动电话呢?
输入json_extract
:
sqlite> select json_extract(user.phone, '$.cell') from user;
+491765
这是如何使用json_extract
的方法。
使用json_set
也类似。假设我们想要更新手机信息:
sqlite> select json_set(user.phone, '$.cell', 123) from \
user;
{"cell":123,"home":"+498973"}
您可以在其他SQL查询中组合这些函数调用。因此,您可以将SQLite与结构化数据和以JSON形式的非结构化数据一起使用。
以下是仅更新用户手机的方法:
sqlite> update user
...> set phone =(select json_set(user.phone, '$.cell', 721) from user)
...> where name == 'oz';
sqlite> select * from user;
oz|{"cell":721,"home":"+498973"}
select people.data from people where json_extract(people.data, '$.age') > 29
。其中,data是一个TEXT列,其JSON值包含整数类型的age属性。 - Rodolfo Gonçalves