假設我在某個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數組的方法 –
你能設法找到解決方案嗎? –