MySQL选择JSON字段属性的值 [英] MySQL select where JSON field property has value

查看:981
本文介绍了MySQL选择JSON字段属性的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何编写在JSON数据类型字段中的属性上具有WHERE的基本MySQL查询?我看不到SO上json字段的基本where子句q.

How to write a basic MySQL query that has a WHERE on a property within a JSON data-type field? I don't see basic where clause q for json fields on SO.

类似这样的东西,但是这些当然不起作用:

Something like this, but of course these dont work:

SELECT * from my_table where meta_data->name = 'bob';

SELECT * from my_table where meta_data[name] IS NOT NULL;

推荐答案

有关如何查询json数据类型字段的一些示例:

Some examples of how to query a json data type field:

SELECT * FROM users WHERE JSON_EXTRACT(meta_data, "$.first_name") = 'bob';

SELECT * FROM users WHERE JSON_EXTRACT(meta_data, "$.age") IS NOT NULL;

SELECT * FROM users WHERE JSON_EXTRACT(meta_data, "$.accepted_policy") = true;

使用mysql 5.7.9 +

您也可以执行此操作(JSON_EXTRACT的快捷方式):

You can also just do this (shortcut for JSON_EXTRACT):

SELECT * FROM users WHERE meta_data->"$.first_name" = 'bob'

您可能会注意到您的json数据结果被引用"了.您可以使用JSON_UNQUOTE,也可以使用它,这是JSON_EXTRACT&的快捷方式. JSON_UNQUOTE:

You might notice your json data results are "quoted". You could use JSON_UNQUOTE, or you could use this, which is a shortcut of JSON_EXTRACT & JSON_UNQUOTE:

SELECT meta_data->>"$.first_name" FROM users WHERE meta_data->>"$.first_name" IS NOT NULL

并从子对象中选择数据:

And to select data from within sub objects:

SELECT meta_data->>"$.address.tel" FROM users WHERE meta_data->>"$.address.street" = "123 Main St"

docs: https://dev.mysql. com/doc/refman/5.7/en/json-search-functions.html

这篇关于MySQL选择JSON字段属性的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆