SQLite json_patch() 函数使用指南

SQLite json_patch() 函数将第二个 JSON 对象合并补充到原 JSON 对象上,并返回合并补充后原 JSON 对象。如果两个参数不全是 JSON 对象,则返回第二个参数。

SQLite json_patch() 函数可以用来修改 JSON 对象,比如:添加新成员、修改成员 和 删除成员。

json_patch() 语法

这里是 SQLite json_patch() 的语法:

json_patch(original_json, patch_json)

参数

original_json
必需的。原始的 JSON 文档。
patch_json
必需的。要修补到原始 JSON 文档上的 JSON 文档。

返回值

如果两个参数都是 JSON 对象,则 SQLite json_patch() 函数将第二个 JSON 对象 patch_json 合并补充到原 JSON 对象 original_json 上,并返回合并补充后原 JSON 对象。

否则, SQLite json_patch() 函数返回第二个参数 patch_json

json_patch() 示例

合并 JSON 对象

要使用 json_patch() 函数向原始 JSON 对象中插入新的成员,请使用如下语句:

SELECT json_patch('{"x": 1}', '{"y": 2}');
json_patch('{"x": 1}', '{"y": 2}')
----------------------------------
{"x":1,"y":2}

要使用 json_patch() 函数更新原始 JSON 对象中的成员的值,请使用如下语句:

SELECT json_patch('{"x": 1}', '{"x": 2}');
json_patch('{"x": 1}', '{"x": 2}')
----------------------------------
{"x":2}

要使用 json_patch() 函数删除原始 JSON 对象中的成员,请使用如下语句:

SELECT json_patch('{"x":1,"y":2}', '{"y": null}');
json_patch('{"x":1,"y":2}', '{"y": null}')
------------------------------------------
{"x":1}

您还可以同时添加、更新和删除,例如:

SELECT json_patch('{"x":1,"y":2}', '{"x":0,"y": null,"z":3}');
json_patch('{"x":1,"y":2}', '{"x":0,"y": null,"z":3}')
------------------------------------------------------
{"x":0,"z":3}

非 JSON 对象

如果两个参数不全是 JSON 对象,SQLite json_patch() 函数返回第二个参数。如下:

  • json_patch() 使用两个数字作为参数

    SELECT json_patch(1, 2);
    
    json_patch(1, 2)
    ----------------
    2
  • json_patch() 使用一个数字和一个字符串作为参数

    SELECT json_patch(1, '"a"');
    
    json_patch(1, '"a"')
    --------------------
    "a"
  • json_patch() 使用一个数字和一个数组作为参数

    SELECT json_patch(1, '[1,2]');
    
    json_patch(1, '[1,2]')
    ----------------------
    [1,2]
  • json_patch() 使用两个数组作为参数

    SELECT json_patch('[0]', '[1,2]');
    
    json_patch('[0]', '[1,2]')
    --------------------------
    [1,2]