php – Mysql查询WHERE列在json数组中

我已经设置了一个查询,它选择了多个东西.

$stm = $db->query('SELECT startUser, forUser, percentage, time, taskTitle, taskDesc, color FROM admin_task WHERE forUser = "'.$queryanswer.'")');

但对于用户在数据库中是这样的:

["demo","   user"]

如何检查forUser(上面的json数组)是否有演示?我甚至可以检查一下吗?

我想你只能在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;

使用’one’查找第一个匹配或’all’查找所有匹配项

您可以使用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

相关文章
相关标签/搜索