我在postgres中有一个表,其中包含jsonb类型的列,我用来以这种格式保存在这个字段中的JSON数组。
post_id |questions |
------------------------------------|---------------------------------------
70071d97-06a8-401f-abfc-20ddada4f402|[{"question": "TEST QUESTION", "transaction_id": "ac547b52-72f3-444e-800c-46aaa48855a5"}, {"question": "TEST QUESTION", "transaction_id": "ac547b52-72f3-444e-800c-46aaa48855ab"}]|
字符串
我想根据transaction_id在列表中删除一个项目。
post_id |questions |
------------------------------------|---------------------------------------
70071d97-06a8-401f-abfc-20ddada4f402|[{"question": "TEST QUESTION", "transaction_id": "ac547b52-72f3-444e-800c-46aaa48855a5"}]|
型
我试过几种方法,但都不管用,我试过了
select questions - '{"question": "TEST QUESTION", "transaction_id": "ac547b52-72f3-444e-800c-46aaa48855a5"}' from posts where post_id = '70071d97-06a8-401f-abfc-20ddada4f402';
型
3条答案
按热度按时间b1payxdu1#
step-by-step demo:db<>fiddle
字符串
1.将数组扩展为每个数组元素一行
1.筛选出要删除的元素
1.将所有剩余元素组合到一个新数组中
t1qtbnec2#
谢谢S-Man的回复。我能得到我想要的东西。
字符串
ss2ws0br3#
这是我对 S-Man/a_horse_with_no_name 示例的升级,用于更新room表,其中包含uididentifier和messagejsonb列。这样,如果没有留下任何消息,则插入空[]。
房间
| 信息| messages |
| --| ------------ |
| { 'message_uid':|'test_id',文本:'hello' } 'hello' } |
字符串
UPDATE:使用函数的更好版本
型