欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SQLite--Json函数介绍

程序员文章站 2022-08-05 10:19:02
SQLite--Json函数介绍,在SQLite中有一些与Json有关的函数,熟练了解掌握它们会对我们的学习开发有很大的帮助。 Json 函数 json(string) 函数会...

SQLite--Json函数介绍,在SQLite中有一些与Json有关的函数,熟练了解掌握它们会对我们的学习开发有很大的帮助。

Json 函数

json(string) 函数会返回一个json对象。

sqlite> select json('{"first":"test", "second":"haha"}');
{"first":"test","second":"haha"}

Json_Object 函数

json_object(key1, value1, key2, value2…) 将json的字段和值传入,会返回json对象。

sqlite> select json_object('first', 'test', 'second', 'haha');
{"first":"test","second":"haha"}
sqlite> select json_object('jsob', json('{"first":"test","second":"haha"}'),'jso
b2', json('{"frist":"test","second":"haha"}'));
--------------------------------------------------
{"jsob":{"first":"test","second":"haha"},"jsob2":{"frist":"test","second":"haha"
}}

在json_object中的参数也可以是json对象,两个函数可以嵌套使用。

Json_Array 函数

json_Array(value1, value2…) 函数会返回一个数组。

sqlite> select json_array(1,2,3,4);
[1,2,3,4]

如果传入的是 json 对象,就会返回json数组。

sqlite> select json_array(json_object('first','test','second','haha'));
[{"first":"test","second":"haha"}]

Json_Array_Length 函数

json_array_length(json),返回指定的数组的长度。

sqlite> select json_array_length('[1,2,3,4]');
4
sqlite> select json_array_length('{"one":[1,2,3]}', '$.one');
3

path: $ 代表前面的这个json对象,one则是字段名。返回 one 的长度。

sqlite> select json_array_length('{"one":[1,2,3], "two": "3"}', '$.two');
0

因为 two 中的只是 3 这个字符,并不是数组,所以返回 0。

Json_Extract 函数

json_extract(json, path, …) 函数的功能是截取 json 中的 value 值。

sqlite> select json_extract('{"a":2, "c":[4,5,{"f":7}]}', '$.c');
--------------------------------------------------------
[4,5,{"f":7}]

可以看到有一个长的 json 对象,分别有 a,b,c 三个字段,c 的值为一个数组,数组里有 4,5和一个 json 对象。截取 json 中的 c 字段。

sqlite> select json_extract('{"a":2, "c":[4,5,{"f":7}]}', '$.c[0]');
---------------------------------------------------------
4
sqlite> select json_extract('{"a":2, "c":[4,5,{"f":7}]}', '$.c[2]');
---------------------------------------------------------
{"f":7}

因为 c 字段的值是数组,所以可以这样去取数组中的值。

sqlite> select json_extract('{"a":2, "c":[4,5,{"f":7}]}', '$.c[2].f');
7

同理,也可以这样取 f 字段的value。

sqlite> select json_extract('{"a":2, "c":[4,5,{"f":7}]}', '$.a','$.c');
---------------------------------------------------------
[2,[4,5,{"f":7}]]

同时截取两个或以上的值,则返回数组。

Json_Insert 函数

json_insert(json, path, value) 函数是将一个 json 字段插入 json 对象中,最后返回插入后的 json 对象。

sqlite> select json_insert('{"a":2, "c":4}', '$.a', 99);
{"a":2,"c":4}

sqlite> select json_insert('{"a":2, "c":4}', '$.b', 99);
{"a":2,"c":4,"b":99}

这个函数会将未出现的字段插入到 json 对象的末尾,如果是已有的字段,则不会修改。

Json_Replace 函数

json_replace(json, path, value…) 这个函数顾名思义就是将 json 中原来字段的值替换成我们设置的值。

sqlite> select json_replace('{"a":2, "c":4}', '$.a', 99);
{"a":99,"c":4}
sqlite> select json_replace('{"a":2, "c":4}', '$.b', 99);
{"a":2,"c":4}

与 json_insert 相对的,这个函数只能替换,不能添加。

Json_Set 函数

json_set(json, path, value…) 函数拥有 json_insert 和 json_replace 两个的功能,既能修改字段的值,也能添加字段。

sqlite> select json_set('{"a":2, "c":4}', '$.b', 99);
{"a":2,"c":4,"b":99}
sqlite> select json_set('{"a":2, "c":4}', '$.a', 99);
{"a":99,"c":4}