SQLite–Json函数介绍

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}
(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐