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}