php – 如何使用MySQL函数在JSON数组中按属性删除对象?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 如何使用MySQL函数在JSON数组中按属性删除对象?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1250字,纯文字阅读大概需要2分钟。
内容图文
"users": [
{
"group": "manager",
"userID": "a123"
},
{
"group": "employee",
"userID": "a456"
}
]
如何用“userID”删除用户对象:“a456”而不知道它在数组中的位置?
如果我们知道该位置,那么以下工作:
$query = 'UPDATE jsontable SET
jsondata = JSON_REMOVE
(
jsondata,
"$.users[1]"
);';
但是,我正在寻找的是这样的:
$query = 'UPDATE jsontable SET
jsondata = JSON_REMOVE
(
jsondata,
(
JSON_SEARCH
(
jsondata,
"all",
JSON_OBJECT("userID", "a456")
)
)
);';
以上操作会为jsondata列生成数据截断错误.其他变体(例如直接放置userID而不是JSON_OBJECT)也会产生错误.
我需要在查询中修复什么才能使JSON_SEARCH返回我想要从数组中删除的特定对象的路径?
请记住,它应该只搜索用户内部,因为主JSON对象上可能有其他属性使用这些ID.
解决方法:
我认为这个JSON_SEARCH可能适合你.它应该为你返回路径.最后一个参数’$**.users’表示仅搜索名为users的路径
SELECT
JSON_SEARCH(jsondata, 'one', 'a456', null, '$**.users')
FROM jsontable
在这里找到一个Dbfiddle JSON_SEARCH
UPDATE
与JSON_REMOVE,JSON_SEARCH和REPLACE函数的组合语句,它取消引用JSON_SEARCH的结果.
UPDATE jsontable
SET jsondata = JSON_REMOVE(
jsondata, REPLACE(
JSON_SEARCH( jsondata, 'one', 'a456', null, '$**.users' )
, '"'
, ''
)
);
其他信息:
> MySQL JSON_SEARCH
> MySQL JSON_REMOVE
> MySQL JSON PATH Syntax
内容总结
以上是互联网集市为您收集整理的php – 如何使用MySQL函数在JSON数组中按属性删除对象?全部内容,希望文章能够帮你解决php – 如何使用MySQL函数在JSON数组中按属性删除对象?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。