SQLite JSON1 个 JSON extract\set 示例
SQLite JSON1 example for JSON extract\set
SQLite 现在有一个实验性的 JSON1 扩展来处理 JSON 字段。可供选择的函数看起来很有前途,但我不知道如何在查询上下文中使用它们。
假设我创建了以下 table:
sqlite> create table user(name,phone);
sqlite> insert into user values('oz', json_array(['+491765','+498973']));
documentation 展示了如何在查询中使用 json_each
,但所有其他函数都缺少一些上下文文档。
有 SQLite 经验的人可以提供一些如何使用的例子吗:
json_extract
json_set
所以,这里是如何使用 json_extract
的第一个示例。首先,数据的插入方式有点不同:
insert into user (name, phone) values("oz", json('{"cell":"+491765", "home":"+498973"}'));
现在,我们可以 select 所有用户 phone 号码正常 sql:
sqlite> select user.phone from user where user.name=='oz';
{"cell":"+491765","home":"+498973"}
sqlite>
但是,如果我们不关心固定电话线而只需要小区 phones 怎么办?
输入 json_extract
:
sqlite> select json_extract(user.phone, '$.cell') from user;
+491765
这就是 json_extract
的使用方法。
使用json_set
类似。假设我们要更新单元格 phone:
sqlite> select json_set(user.phone, '$.cell', 123) from \
user;
{"cell":123,"home":"+498973"}
您可以在其他 SQL 查询中组合这些函数调用。这样,您可以
将 SQLite 与结构化数据和非结构化数据一起使用
JSON。
以下是仅更新用户单元 phone 的方法:
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"}
SQLite 现在有一个实验性的 JSON1 扩展来处理 JSON 字段。可供选择的函数看起来很有前途,但我不知道如何在查询上下文中使用它们。
假设我创建了以下 table:
sqlite> create table user(name,phone);
sqlite> insert into user values('oz', json_array(['+491765','+498973']));
documentation 展示了如何在查询中使用 json_each
,但所有其他函数都缺少一些上下文文档。
有 SQLite 经验的人可以提供一些如何使用的例子吗:
json_extract
json_set
所以,这里是如何使用 json_extract
的第一个示例。首先,数据的插入方式有点不同:
insert into user (name, phone) values("oz", json('{"cell":"+491765", "home":"+498973"}'));
现在,我们可以 select 所有用户 phone 号码正常 sql:
sqlite> select user.phone from user where user.name=='oz';
{"cell":"+491765","home":"+498973"}
sqlite>
但是,如果我们不关心固定电话线而只需要小区 phones 怎么办?
输入 json_extract
:
sqlite> select json_extract(user.phone, '$.cell') from user;
+491765
这就是 json_extract
的使用方法。
使用json_set
类似。假设我们要更新单元格 phone:
sqlite> select json_set(user.phone, '$.cell', 123) from \
user;
{"cell":123,"home":"+498973"}
您可以在其他 SQL 查询中组合这些函数调用。这样,您可以 将 SQLite 与结构化数据和非结构化数据一起使用 JSON。
以下是仅更新用户单元 phone 的方法:
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"}