如何在MYSQL中使用AND查询JSON数组

10 浏览
0 Comments

如何在MYSQL中使用AND查询JSON数组

如果我在MySQL数据库的一列中有如下的JSON数据,如何在MySQL中选择所有行,其中同一个对象的name = 'John'且checked = true。JSON对象可能有更多的键,且键的顺序可能不固定。

0
0 Comments

问题的原因是用户想要在MySQL中查询JSON数组并使用AND条件进行过滤,但是给出的示例代码是在PostgreSQL中实现的。

要解决这个问题,我们需要将示例代码转换为适用于MySQL的查询。以下是在MySQL中查询JSON数组并使用AND条件的解决方法:

CREATE TABLE users (data JSON);
INSERT INTO users VALUES ('[{"name": "John", "checked": "true"}, {"name": "Lucy", "checked": "false"}]'),('[{"name": "John", "checked": "false"}, {"name": "Lucy", "checked": "false"}]'),('[{"name": "John", "checked": "false"}, {"name": "Lucy", "checked": "true"}]');
SELECT * FROM users, JSON_TABLE(users.data, "$[*]" COLUMNS (name VARCHAR(50) PATH "$.name", checked VARCHAR(10) PATH "$.checked")) AS obj
WHERE obj.name = 'John' AND obj.checked = 'true';

以上代码将创建一个名为users的表,并插入几个包含JSON数组的记录。然后,使用JSON_TABLE函数将JSON数组转换为表格形式,并使用obj别名引用该表格。最后,使用WHERE子句进行AND条件过滤,以获取符合条件的结果。

通过这种方式,我们可以在MySQL中查询JSON数组并使用AND条件进行过滤。

0
0 Comments

在MySQL中查询JSON数组并使用AND查询的问题是由于JSON不适合存储在MySQL中而产生的。解决方法是将数据库设计为关系型数据库,并使用额外的表来链接数据,使用SQL中的"joins"和规范化的方法。此外,从MySQL 5.7开始,可以使用一些与JSON相关的函数。以下是一个使用SQL匹配JSON的示例代码:

SELECT
   IF(people LIKE '%\"checked\": true%', TRUE, FALSE) AS 'john_checked'
FROM table
WHERE (people LIKE '%\"name\": \"John\"%')

然而,这个示例代码存在一个问题,即它会找到John为false但Lucy为true的行。因此,更好的解决方法是只获取包含"name": "John"的行,然后使用代码/脚本来解码JSON,或者不将JSON存储在MySQL中,而是使用更多的表来创建关系数据库(或使用NoSQL解决方案)。

0
0 Comments

问题的原因是用户想要在MYSQL中查询JSON数组,并且使用AND条件进行筛选。用户想要查询的条件是JSON数组中包含特定的键值对。解决方法是使用MYSQL的JSON_CONTAINS函数来实现,该函数接受两个参数,第一个参数是要查询的JSON数组字段,第二个参数是要匹配的JSON对象。在查询中,使用WHERE子句来过滤符合条件的记录。

解决方法如下所示:

SELECT * from `users`

WHERE JSON_CONTAINS(`data`, '{"name": "John","checked": true}');

如果JSON数组是{"name": John, "male": true, "checked": true},也是可以正常工作的。JSON_CONTAINS函数不依赖于JSON中的其他字段或字段的顺序。

这个方法非常有效,感谢您的回答,这是我第一次有人花时间回答我以前的问题,我非常感激!

0