Sqlite: append a new element to an existing array

Gre*_*een 5 sqlite json sqlite-json1

From the sqlite3 doc

select json_insert('{"a":2,"c":4}', '$.e', 99) -- ? '{"a":2,"c":4,"e":99}'
Run Code Online (Sandbox Code Playgroud)

But how to append a new element to an array?

select json_insert('[1,2,3]', ??, 4) -- ? '[1, 2, 3, 4]'
update someTable set someArray = json_insert(someArray, ??, 'some new value') 
Run Code Online (Sandbox Code Playgroud)

Gre*_*een 5

经过几次尝试,我终于想通了

update some_table
  set some_array = json_insert(
    some_array,
    '$[' || json_array_length(some_array) || ']',
    'new item'
  )
  where id = some_id;
Run Code Online (Sandbox Code Playgroud)


Elf*_*lem 5

3.31.0版本中引入了新的表示法来直接支持此功能:

\n
select json_insert(\'[1,2,3]\', \'$[#]\', 4) -- \xe2\x86\x92 \'[1, 2, 3, 4]\'\n
Run Code Online (Sandbox Code Playgroud)\n