2016-03-27 60 views
12

假设我在某个mysql表中有一个名为数据的JSON列,并且此列是单个数组。所以数据可能包含:例如[1,2,3,4,5]。现在我想选择所有具有数据列的行,其中一个数组元素大于2.这可能吗?我尝试了以下方法,但似乎总是如此,无论数组中的值如何:如何在mysql中搜索json数组?

SELECT * from my_table where JSON_EXTRACT(data, '$[*]') > 2; 
+0

你可以在postgresql中搜索json数组,通常作为其他字段,在mysql中你必须使用mysql函数搜索,你可以在这里找到:https://dev.mysql.com/doc /refman/5.7/en/json-search-functions.html – Thresh

+0

谢谢,但我找不到使用这些函数搜索json数组的方法 –

+0

你能设法找到解决方案吗? –

回答

1

一种可能的方法是将问题作为字符串匹配来处理。将JSON转换为字符串并进行匹配。您可以使用JSON_CONTAINS

+0

我不确定字符串匹配是否会工作,因为我想比较大于不但相等,同样适用于json_contains,它搜索确切包含,不比较功能。 –

0

我不知道我们是否找到解决方案。 我用MariaDB找到了一种方法来搜索数组中的路径。例如,在阵列[{ “ID”:1},{ “ID”:2}],我想找到2.

SELECT JSON_SEARCH('name_field', 'one', 2, null, '$[*].id') 
FROM name_table 

结果ID为等于路径是:

"$[1].id" 

星号表示搜索整个阵列