mysql - MYSQL 中是否有类似 JSON_ARRAY_APPEND 的函数,但要附加多个值?
问题描述
我想在 JSON_ARRAY_APPEND 中添加多个值。
例如在以下查询中:
SET @data = '{
"Person": {
"Name": "Homer",
"Hobbies": ["Eating", "Sleeping"]
}
}';
SELECT JSON_ARRAY_APPEND(@data, '$.Person.Hobbies', "Base Jumping") AS 'Result';
我们的结果是:
{“人”:{“姓名”:“荷马”,“爱好”:[“吃”,“睡觉”,“基地跳跃”]}}
我希望能够在一行中添加多个爱好而不是十几个,使用类似的东西
SET @data = '{
"Person": {
"Name": "Homer",
"Hobbies": ["Eating", "Sleeping"]
}
}';
SELECT JSON_ARRAY_APPEND(@data, '$.Person.Hobbies', '"Base Jumping","Skiing"') AS 'Result';
这导致
{“人”:{“姓名”:“荷马”,“爱好”:[“吃”,“睡觉”,“\”跳基\”,\“滑雪\”]}}
这几乎是我想要的,但有多余的字符是不想要的。有没有更好的方法来解决这个问题?
解决方案
JSON_ARRAY_APPEND()
允许您指定多个路径和值参数。您可以重复相同的路径,它将追加到前面追加的结果。
SELECT JSON_ARRAY_APPEND(@data,
'$.Person.Hobbies', "Base Jumping",
'$.Person.Hobbies', "Skiing") AS Result;
文档中提到了这一点:
路径值对从左到右进行评估。通过评估一对生成的文档成为评估下一对的新值。
您还可以使用JSON_MERGE_PRESERVE()
连接数组:
SELECT JSON_MERGE_PRESERVE(@data, '$.Person.Hobbies', '["Base Jumping", "Skiing"]') AS Result;
推荐阅读
- markdown - Markdown 无法在内联代码段内创建链接
- python - 如何使用 VBA 指定打印机?
- django - DRF 嵌套序列化程序无法更新嵌套数据
- php - codeigniter DOMPDF 显示空白屏幕,没有错误,html 生成正确但 pdf 不生成
- unix - 我使用 nohup 运行了一个脚本,其中调用了 3 个下标
- fortran - 不同的程序结果取决于程序的链接方式
- python - 当输入为 DataFrame 时,使用索引数组在 GridSearchCV 中定义折叠
- typescript - Firebase 云函数使用 onCall 返回处理后的数据
- ios - 如何将 HMAC 中的密钥作为 HEX Swift iOS 传递
- javascript - 无法绑定到“chartType”,因为它不是“画布”的已知属性