2016-03-27 61 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" 

星號表示搜索整個陣列