假设我在某个mysql表中有一个名为数据的JSON列,并且此列是单个数组。所以数据可能包含:例如[1,2,3,4,5]
。现在我想选择所有具有数据列的行,其中一个数组元素大于2.这可能吗?我尝试了以下方法,但似乎总是如此,无论数组中的值如何:如何在mysql中搜索json数组?
SELECT * from my_table where JSON_EXTRACT(data, '$[*]') > 2;
假设我在某个mysql表中有一个名为数据的JSON列,并且此列是单个数组。所以数据可能包含:例如[1,2,3,4,5]
。现在我想选择所有具有数据列的行,其中一个数组元素大于2.这可能吗?我尝试了以下方法,但似乎总是如此,无论数组中的值如何:如何在mysql中搜索json数组?
SELECT * from my_table where JSON_EXTRACT(data, '$[*]') > 2;
一种可能的方法是将问题作为字符串匹配来处理。将JSON转换为字符串并进行匹配。您可以使用JSON_CONTAINS。
我不确定字符串匹配是否会工作,因为我想比较大于不但相等,同样适用于json_contains,它搜索确切包含,不比较功能。 –
我不知道我们是否找到解决方案。 我用MariaDB找到了一种方法来搜索数组中的路径。例如,在阵列[{ “ID”:1},{ “ID”:2}],我想找到2.
SELECT JSON_SEARCH('name_field', 'one', 2, null, '$[*].id')
FROM name_table
结果ID为等于路径是:
"$[1].id"
星号表示搜索整个阵列
你可以在postgresql中搜索json数组,通常作为其他字段,在mysql中你必须使用mysql函数搜索,你可以在这里找到:https://dev.mysql.com/doc /refman/5.7/en/json-search-functions.html – Thresh
谢谢,但我找不到使用这些函数搜索json数组的方法 –
你能设法找到解决方案吗? –