gpt4 book ai didi

MySQL JSON_SET() 处理空数组

转载 作者:行者123 更新时间:2023-11-29 09:38:59 27 4
gpt4 key购买 nike

我有一个这样的表:

CREATE TABLE `test` (
`id` int(11) NOT NULL,
`settings` json NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

INSERT INTO `test` (`id`, `settings`) VALUES
('1', '{\"foo\": {\"bar\": 1}}'),
('2', '{\"foobar\": 2}'),
('3', '[]');

我想向一行添加一个新设置,所以我尝试了 JSON_SET :

SELECT *, JSON_SET(settings, '$.newFoo', 10) FROM test;

enter image description here

正如你所看到的,它对第3行不起作用。预期结果当然与第4行相同; [] 是 php 中对空数组进行 json 编码的结果(如果该项目没有任何设置)。

可以进行适用于所有情况的单个查询吗?

<小时/>

P.S.:我需要做的是更新,即 UPDATE test SET settings=JSON_SET(...) WHERE id=?;

最佳答案

这也困扰了我很长一段时间,但尝试使用 JSON_ARRAY() 而不是双括号符号“[]”。例如:

INSERT INTO `test` (`id`, `settings`) VALUES 
('1', '{\"foo\": {\"bar\": 1}}'),
('2', '{\"foobar\": 2}'),
('3', JSON_ARRAY());

关于MySQL JSON_SET() 处理空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57060169/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com