我已经设置了一个查询,它可以选择多个内容。
$stm = $db->query('SELECT startUser, forUser, percentage, time, taskTitle, taskDesc, color FROM admin_task WHERE forUser = "'.$queryanswer.'")');
但是对于DB中的用户来说是这样的:
["demo"," user"]
如何检查forUser(上面的json数组)是否有demo?我甚至可以检查一下吗?
答案 0 :(得分:9)
我认为你只能在Mysql 5.7中实现这一点。
在5.7版中,您可以执行以下操作:
SELECT JSON_EXTRACT(json_field, '$.name');
并且它将仅从json对象中提取名称密钥。
使用' JavaScript'搜索所有项目标签强>
SELECT * FROM `table` WHERE JSON_CONTAINS(json_field, '["JavaScript"]');
查找包含标记的所有项目' Java'
SELECT * FROM `table` WHERE JSON_SEARCH(json_field, 'one', 'Java%') IS NOT NULL;
使用'一个'找到第一场比赛或“全部”比赛找到所有比赛
您可以使用JSON路径提取Twitter昵称:
SELECT name, json_field->"$.twitter" AS `twitter` FROM `user`;
您还可以在WHERE子句中引用JSON路径,仅返回具有Twitter帐户的用户:
SELECT name, profile->"$.twitter" AS `twitter` FROM `user` WHERE profile->"$.twitter" IS NOT NULL;
你可以做更多的事情:
创建JSON值
JSON值的规范化,合并和自动包装
搜索和修改JSON值
JSON值的比较和排序
JSON值的聚合
有关详细信息,请参阅:https://dev.mysql.com/doc/refman/5.7/en/json.html
答案 1 :(得分:2)
如果它确实是JSON字段,则在5.7中可以执行以下操作:
ls -a /home/shirley/ <-- file is in here
rm /home/shirley/.angular.json <-- remove it
答案 2 :(得分:1)
SELECT startUser,
forUser,
percentage,
time,
taskTitle,
taskDesc,
color
FROM admin_task WHERE JSON_SEARCH(forUser -> '$[*]', 'one', 'demo');